-
[DB] 프로시저(Procedure)란 ?
1. 저장 프로시저(Stored Procedure)란 ? DB 내부에 저장된 일련의 SQL 명령문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합 즉, DB에 대한 작업을 정리한 절차를 RDBMS(관계형 데이터 베이스 관리 시스템)에 저장한 쿼리의 집합이다. 영구저장모듈이라고도 불린다. SQL Server에서 제공되는 프로그래밍 기능. 쿼리문의 집합 어떠한 동작을 일괄 처리하기 위한 용도로 사용 자주 사용되는 일반적인 쿼리를 모듈화시켜서 필요할 때마다 호출 테이블처럼 각 데이터베이스 내부에 저장 여러 개의 칼럼을 조회하고, 여러 개의 테이블을 조인하고, 조건문까지 넣어주면 하나의 쿼리를 만드는데 엄청나게 긴 쿼리문이 생기게 되는데 이러한 여러 개의 쿼리를 사용할 때마다 긴 쿼리문을 작성한다면 매우 불편할 ..
2024.02.08
-
[Database] 뷰(VIEW)란 ?
1. 뷰(VIEW) 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로부터 유도된 가상 테이블 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. 2. 뷰의 장단점 뷰의 장점 데이터 조회가 용이하다 (복잡한 쿼리를 단순화) 사용자에게 필요한 정보만 제공할 수 있다 (보안 이점) 물리적인 공간이 필요하지 않다 뷰의 단점 뷰에 인덱스를 구성할 수 없다 뷰를 포함하여 뷰를 만든 경우 연관 뷰를 삭제하면 생성된 뷰도 삭제된다 한번 정의된 뷰는 수정이 불가하다
2024.01.02
-
[Network] OSI 7 계층(Layer)의 개념 및 역할
1. OSI 7 계층이란 ? OSI 7 계층은 국제표준화기구(ISO)에서 정의한 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 네트워크 표준 모델 정보를 송신할 때 각 계층을 지날 때마다 각 계층에서의 Header가 붙게되고 수신측은 역순으로 헤더를 분석하게 된다. OSI 7단계로 정의한 이유는 통신이 일어나는 과정을 단계별로 파악하기 위함과 통신 과정 중에 특정한 곳에 이상이 생길 경우 통신 장애를 일으킨 단계에서 해결할 수 있기 때문이다. 2. OSI 7 계층 구조 2-1. 물리 계층(Physical Layer) OSI 모델의 최하위 계층에 속하며, 데이터를 전기적인 신호로 변환해서 다른 시스템에 전송하는 역할을 수행하는 계층이다. 인터넷 케이블, 라우터, 스위치 등의 전기적 신호가 물리적인 장치..
2024.01.02
-
[Network] TCP와 UDP의 차이
OSI 7 레이어에서 전송(Transport)계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 이러한 전송계층에서 사용되는 프로토콜이 바로 TCP와 UDP입니다. 1. TCP TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 일반적으로 TCP와 IP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면 TCP는 패킷 추적 및 관리를 하게 됩니다. 연결 지향형인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장합니다. 데이터의 '전송 순서' 보장 '신뢰성' 있는 데이터 전송을 지원 UDP보다 전송 속도가 느림 연결을 설정(3-way handshaking)과 ..
2023.11.26
-
[면접을 위한 CS 전공지식 노트] 3-4 CPU 스케줄링 알고리즘
CPU 스케줄러는 CPU 스케줄링 알고리즘을 바탕으로 프로세스에서 해야 하는 작업들을 스레드 단위로 CPU에 할당한다. 즉, CPU 스케줄링 알고리즘에 따라 어떤 프로그램에 'CPU 소유권'을 부여할 것인지 결정한다. 이 알고리즘은 CPU 이용율을 높게, 주어진 시간에 최대한 많은 일을 하도록, 준비 큐에 있는 프로세스는 최대한 적게, 응답 시간은 짧게 설정하는 것을 목표로 하고 있다. 1. 비선점형 방식 프로세스가 스스로 CPU 소유권을 포기하는 방식으로, 강제로 프로세스를 중지하지 않는다. FCFS 알고리즘 : 가장 먼저 온 것은 먼저 처리하는 알고리즘이다. 길게 수행되는 프로세스 때문에 준비 큐에서 오래 기다리게 되는 단점이 있다. SJF 알고리즘 : 실행 시간이 가장 짧은 프로세스부터 실행하는 ..
2023.11.26
-
[Python] 문자열 대문자 및 소문자 변환 함수(upper / capitalize / title / lower / swapcase)
1. 대문자로 변환하는 함수 A='abcd' print(A.upper()) #ABCD print(A.capitalize()) #Abcd print(A.title()) #Abcd B='a2b3c4' print(B.upper()) #A2B3C4 print(B.capitalize()) #A2b3c4 print(B.title()) #A2B3C4 C="abc-def efg" print(C.upper()) #ABC-DEF EFG print(C.capitalize()) #Abc-def efg print(C.title()) #Abc-Def Efg upper() : 모든 알파벳을 대문자로 변환 capitalize() : 문자열의 첫 글자는 대문자로 만들고 나머지는 소문자로 변환 title() : 알파벳 외의 문자(숫자,..
2024.01.05
-
[Python] 아스키코드(Ascii Code) 관련 함수 ord / chr
1. ord(문자) print(ord('a')) # 97 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환합니다. 2. chr(정수) print(chr(97)) # 'a' 하나의 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환합니다.
2024.01.05
-
[Python] collections 모듈의 Counter 사용법
1) Counter 기본 사용법 이번에는 데이터의 개수를 셀 때 매우 유용한 파이썬의 collections 모듈의 Counter 클래스에 대해서 알아보겠습니다. from collections import Counter collections 모듈의 Counter 클래스는 별도 패키지 설치 없이 파이썬만 설치되어 있다면 위와 같이 임포트해서 바로 사용할 수 있습니다. >>> Counter(["hi", "hey", "hi", "hi", "hello", "hey"]) Counter({'hi': 3, 'hey': 2, 'hello': 1}) >>> Counter("hello world") Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': ..
2023.10.07
-
[Python] Hash 자료형(사전 자료형) 정리
1) Hash 자료형 정리 파이썬에서는 Dictionary 라는 자료구조를 통해 해시를 제공합니다. 그리고 Dictionary는 dict 클래스에 구현되어있습니다. 해시 자료형은 다음과 같은 상황에서 사용할 수 있습니다. 리스트를 쓸 수 없을 때 (인덱스 값을 숫자가 아닌 다른 값 문자열이나 튜플을 사용하려고 할 때) 빠른 접근 / 탐색이 필요할 때 ⭐️ 집계가 필요할 때(해시와, collections 모듈의 Counter 클래스를 사용) 2) 딕셔너리와 리스트의 시간 복잡도 차이 List에 비해 Dictionary가 매우 빠른 시간복잡도를 갖는 것을 보실 수 있습니다. 즉 , 원소를 넣거나 삭제, 탐색할 일이 많을 때에는 딕셔너리를 사용하는 것이 좋습니다. 3) 딕셔너리 사용법 3-1) 선언 # 빈딕셔..
2023.10.05
-
[Python] deque의 정의, 함수, 활용 정리
1) Deque 정의 Deque는 "double-ended que"의 약자로 스택과 큐를 일반화 한 것이다. List의 경우 고정 길이 연산에 특화되어 있으며, pop(0)과 insert(0, v) 연산에 대해 O(n)의 메모리 비용이 필요한 반면 Deque의 경우 추가(append)와 꺼내기(pop) 연산을 O(1)의 속도로 지원한다. 2) deque 함수들 3) deque 생성 from collections import deque #deque 선언 queue = deque(['this', 'is', 'deque']) print(queue) # deque(['this', 'is', 'deque']) 4) deque 활용하기 from collections import deque #deque 생성 d = ..
2023.10.05
-
[백준 2212번] 센서
https://www.acmicpc.net/problem/2212import sysimport heapqinput = sys.stdin.readline# 고속도로 위에 N개의 센서를 설치# 고속도로 위에 최대 K개의 집중국을 세울 수 있다# 각 집중국은 센서의 수신 가능 영역을 조절할 수 있다# 집중국의 수신 가능 영역은 고속도로 상에서 연결된 구간으로 나타나게 된다# N개의 센서는 적어도 하나의 집중국과는 통신이 가능해야함# 각 집중국의 '수신 가능 영역의 길이의 합'을 최소화# 고속도로는 평면상의 직선이라고 가정# 센서들은 이 직선 위의 한 기점인 원점으로부터의 정수 거리의 위치에 놓여 있다# 따라서, 각 센서의 좌표는 정수 하나로 표현# 단, 집중국의 수신 가능영역의 길이는 0 이상이며 모든 센서의..
2024.10.05
-
[백준 18428번] 감시 피하기
https://www.acmicpc.net/problem/18428import sysimport copyinput = sys.stdin.readline# NxN 크기의 공간에 선생님(T), 학생(S), 혹은 장애물(O)이 위치# 복도로 빠져나온 학생들은 선생님의 감시에 들키지 않는 것이 목표# 각 선생님들은 자신의 위치에서 상, 하, 좌, 우 4가지 방향으로 감시를 진행# 선생님은 상, 하, 좌, 우 4가지 방향에 대하여, 아무리 멀리 있더라도 장애물로 막히기 전까지의 학생들은 모두 볼 수 있다# 단, 복도에 장애물이 위치한 경우, 선생님은 장애물 뒤편에 숨어 있는 학생들은 볼 수 없다# 학생들은 복도의 빈 칸 중에서 장애물을 설치할 위치를 골라, 정확히 3개의 장애물을 설치# 결과적으로 3개의 장애물을..
2024.10.05
-
[백준 21611번] 마법사 상어와 블리자드
https://www.acmicpc.net/problem/21611import sysfrom collections import dequeinput = sys.stdin.readline# 가장 처음에 상어가 있는 칸을 제외한 나머지 칸에는 구슬이 하나 들어갈 수 있다# 구슬은 1번 구슬, 2번 구슬, 3번 구슬이 있다# 같은 번호를 가진 구슬이 번호가 연속하는 칸에 있으면, 그 구슬을 연속하는 구슬이라고 한다.# 블리자드 마법을 시전하려면 방향 di와 거리 si를 정해야 한다. # 총 4가지 방향 ↑, ↓, ←, → (1, 2, 3, 4)# 마법사 상어는 블리자드를 총 M번 시전# 시전한 마법의 정보가 주어졌을 때# 출력 : 폭발한 1번 구슬의 개수, 폭발한 2번 구슬의 개수, 폭발한 3번 구슬의 개수N,..
2024.10.05
-
[삼성 SW 역량테스트 기출] 고대 문명 유적 탐사
https://www.codetree.ai/training-field/frequent-problems/problems/ancient-ruin-exploration?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.aiimport sysimport copyfrom collections import dequeinput = sys.stdin.readline# 유물 조각은 총 7가지 종류로, 각각 숫자 1부터 7로 표현# 1. 탐사 진행# 3x3 격자 선택 후 시계 방향으로 90도, 180도, 270도..
2024.10.04
-
[백준 1417번] 국회의원 선거
https://www.acmicpc.net/problem/1417import sysimport heapqinput = sys.stdin.readline# 국회의원 선거를 조작# 다솜이의 기계는 각 사람들이 누구를 찍을 지 미리 읽을 수 있다. # 어떤 사람이 누구를 찍을 지 정했으면, 반드시 선거때 그 사람을 찍는다.# 형택구에 나온 국회의원 후보는 N명# 다솜이는 이 기계를 이용해서 그 마을의 주민 M명의 마음을 모두 읽었다.# 다솜이는 기호 1번# 자신을 찍지 않으려는 사람을 돈으로 매수해서 국회의원에 당선이 되게 하려고 한다.# 다른 모든 사람의 득표수 보다 많은 득표수를 가질 때, 그 사람이 국회의원에 당선# 출력 : 다솜이가 매수해야하는 사람의 최솟값N = int(input())my_vote =..
2024.10.03