CS 45

SQLD 턱걸이로 합격하기

※ 이 포스팅은 쿠팡 파트너스 활동 일환으로, 이에 따른 일종의 수수료를 제공받습니다.  2024년 11월에 어쩌다보니 SQLD 시험을 보게되었다. 하필 회사에서의 일도 바빴기때문에 공부할 시간이 많이 부족했다. 그래서 일단 합격을 목표로 공부를 하기 시작했고, 시간을 효율적으로 쓰기위해 선택과 집중을 하였다. 일단 과목별로 우선순위를 정하여 공부를 하였고 우선순위가 낮은 과목은 과감히 공부를 하지 않았다. 특히, 비전공자이면서 학점은행제로 인해 SQLD 합격이 필요한 사람들은 나의 방법을 적용하면 좋은 결과를 받을 수 있을 것이다. 다음은 SQLD를 12시간 공부하면서 적용했던 방법이다. 1. 1과목 "데이터 모델링의 이해"는 무조건 다 맞는다는 생각으로 외운다.1과목을 다 맞으면 총 20점이다. 내용..

[프로그래머스 SQL] 동명 동물 수 찾기

※ 이 포스팅은 쿠팡 파트너스 활동 일환으로, 이에 따른 일종의 수수료를 제공받습니다. GROUP BY를 사용하여 동물의 name을 기준으로 그룹을 만든다. 이때 name을 기준으로 그룹을 만들었을 때 HAVING을 사용하여 그 개수가 2개 이상인 것만 필터링한다.SELECT name, count(name) as 'COUNT'FROM animal_insGROUP BY nameHAVING count(name) >= 2ORDER BY name

[프로그래머스 SQL] 아픈 동물 찾기

※ 이 포스팅은 쿠팡 파트너스 활동 일환으로, 이에 따른 일종의 수수료를 제공받습니다.    먼저 조회해야하는 필드인 ANIMAL_ID, NAME을 선택한다.그리고 아픈 동물을 찾아야하기 때문에 WHERE 조건절을 사용하여 INTAKE_CONDITION이 "Sick"인 동물을 찾는다.마지막으로 아이디 순으로 조회해야하기 때문에 ORDER BY를 사용하여 ANIMAL_ID를 기준으로 정렬한다. (기본적으로 오름차순이기 때문에 ASC는 따로 추가하지 않았다.)SELECT animal_id, nameFROM animal_insWHERE intake_condition = 'Sick'ORDER BY animal_id

[운영체제] 멀티 스레드와 멀티 프로세스

멀티 스레드 멀티 스레드란? 싱글 스레드는 하나의 프로세스에서 하나의 작업만이 가능했다. 하지만 멀티 스레드는 하나의 프로세스에 여러 개의 스레드가 존재하고 각각 여러 개의 일을 수행하도록 한다. 멀티 스레드를 사용하는 이유 각각의 프로세스는 별도의 메모리를 갖고 있으며 프로세스끼리 통신을 할 때는 IPC를 통해 할 수 있다. 하지만 스레드는 코드, 데이터, 힙 영역을 공유하며 고유의 스택 영역을 갖고 있고 힙 영역을 통해 스레드끼리 통신을 할 수 있어 비교적 간단하다. 또한 CPU를 점유하고 있는 프로세스를 교체하는 작업인 문맥 교환이 일어날 때 현재 실행 중인 프로세스를 PCB에 저장하고 다음 차례인 프로세스의 정보를 가져와 실행시키는 작업이 많이 일어나게 되면 자원의 소모가 늘어나고 처리량이 저하된..

CS/운영체제 2021.11.22

[자료구조] 전위 순회와 후위 순회를 알 때의 트리

전위 순회와 후위 순회의 결과가 주어질 때 트리를 구하고, 이 트리를 통해 중위 순회도 구현할 수 있다. 원리 위와 같은 트리가 주어졌을 때 전위 순회와 후위 순회의 결과는 다음과 같다. 전위 순회 : 1 2 4 8 9 5 10 11 3 6 7 후위 순회 : 8 9 4 10 11 5 2 6 7 3 1 이때 전위 순회의 첫 번째 숫자와 후위 순회의 마지막 숫자가 루트 노드라는 것을 알 수 있다. (전위 순회는 루트 노드를 먼저, 후위 순회는 루트 노드를 마지막으로 방문하기 때문이다.) 그 다음 전위 순회의 두 번째 숫자는 루트 노드의 왼쪽 자식 노드가 될 것이고, 후위 순회에서 마지막에서 두 번째 노드는 루트 노드의 오른쪽 자식 노드가 될 것이다. 이때 두 번째 숫자인 2를 후위 순회에서 찾아보면 8부터 ..

CS/자료구조 2021.11.11

[자료구조] 힙(heap)

자료구조 힙에 대한 개념을 알아보고 완전 이진 트리를 통해 최소힙과 최대힙을 구현해보자. 들어가기전에 먼저 힙에 대해 알아보기 전에 완전이진트리의 개념을 상기시킬 필요가 있다. 힙은 완전이진트리의 형태이기 때문이다. 아래의 그림은 포화이진트리를 나타낸 것이다. 포화이진트리는 리프 노드를 제외한 모든 노드들이 2개의 자식 노드들을 갖고있는 트리이다. 포화이진트르의 노드 개수는 높이가 h 일 때 2^(h+1) - 1이 된다. 아래의 그림은 완전이진트리를 나타낸 것이다. 위의 포화이진트리에서 가장 오른쪽에 있는 리프노드를 제거한 모습이다. 이처럼 완전이진트리는 왼쪽부터 빈틈없이 채워나간 트리를 의미한다. 아래의 그림은 완전이진트리가 아니다. 왜냐하면 왼쪽 리프노드에 빈 칸이 존재하기 때문이다. 완전이진트리는 ..

CS/자료구조 2021.11.03

[자료구조] 스택으로 큐, 큐로 스택 구현하기

스택과 큐의 원리를 이용하면 스택으로 큐를, 큐로 스택을 구현할 수 있다. 그 원리를 알아보고 코드로 구현해보자. 스택으로 큐 구현하기 큐는 선입선출의 구조로 데이터가 들어온 순서대로 나가게된다. 이를 스택 2개를 활용하여 구현할 수 있다. 아래의 그림을 보자. 스택 A와 B가 존재한다. 만약 큐에 PUSH하는 과정이 일어나면 스택 A에 PUSH를 한다. 이후 큐에 POP연산을 하게되면 스택 A의 모든 데이터를 스택 B로 옮긴다. 그렇게되면 스택 A의 역순으로 데이터가 저장될 것이고 스택 B를 POP하면 큐에 저장된 데이터 순서대로 출력될 것이다. 즉 스택 A는 인큐의 역할을 하게되고 스택 B는 디큐의 역할을 하게된다. PUSH를 하면 스택에는 가장 늦게 들어온 데이터가 맨 위에 쌓일 것이며 이를 다시 ..

CS/자료구조 2021.10.28

[자료구조] 해시 테이블

그 동안 알고리즘 문제를 풀 때 dict를 많이 사용하였다. dict는 해시 테이블이라는 자료구조 인데 key-value 쌍으로 데이터를 저장할 수 있다. 원리는 대충 알고있었지만 정확하게 어떠한 원리를 갖고있는지 이해하고 싶어서 정리를 하게 되었다. 해싱 먼저 해싱이라는 개념을 이해할 필요가 있다. 해싱은 랜덤한 길이의 값을 해시 함수를 사용하여 고정된 크기의 값으로 변환하는 것을 의미한다. 아래의 그림과 같이 "apple", "banana", "complete"처럼 문자열의 길이가 다양한 단어가 들어왔을 때 세 자리 정수로 변환하는 작업을 해싱이라 할 수 있다. 해시 테이블과 해시 함수의 필요성 해시 테이블 해시 테이블은 해시 함수를 통해 변환된 값을 Index로 삼아 Key와 Value를 저장하는 ..

CS/자료구조 2021.10.21

[자료구조] 트리 : 최소 공통 조상(LCA)

트리에서 최소 공통 조상이 무엇이며 이를 구하기 위한 기본적인 방법과 메모리를 사용하여 시간 복잡도를 개선한 알고리즘을 알아보자. 최소 공통 조상(Lowest Common Ancestor) 최소 공통 조상은 두 노드의 공통된 조상 중에서 가장 가까운 조상을 의미한다. 아래의 트리를 통해 9번 노드와 11번 노드의 LCA를 알아보자. 9번 노드의 부모 노드는 4 -> 2 -> 1이며 11번 노드의 부모 노드는 5 -> 2 -> 1이다. 이때 2와 1은 두 노드의 공통 조상이된다. 이처럼 두 개의 노드에서 공통 조상이 될 수 있는 노드는 여러 개일 수 있으며 여기서 레벨이 가장 높은(두 개의 노드에서 가장 가까운)노드가 최소 공통 조상이 된다. LCA 알고리즘 Ⅰ 기본적인 LCA 알고리즘의 개념은 다음과 같..

CS/자료구조 2021.10.19

[알고리즘] 정렬 : 퀵 정렬

퀵 정렬은 합병 정렬과 같이 분할 정복 알고리즘을 적용한 정렬 기법이며 평균적으로 매우 빠른 속도를 갖고있다. 또한 정렬 대상에 동일한 키 값이 존재할 경우 키 값의 순서가 바뀌는 불안정 정렬이다. 개념 퀵 정렬은 피벗(pivot)을 설정하여 피벗을 기준으로 작은 값은 피벗의 왼쪽으로 큰 값은 피벗의 오른쪽으로 이동시킨다. 아래에 정렬할 대상이 있다. 여기서는 가장 앞에 있는 값을 피벗으로 설정해보자. [3, 1, 10, 6, 4, 7, 8, 2, 5, 9] 그렇다면 3이 피벗이되고 3을 기준으로 작은 값은 왼쪽으로 큰 값으 오른쪽으로 이동시키면 아래와 같은 결과를 갖는다. [1, 2] < [3] < [10, 6, 4, 7, 8, 5, 9] 위와 같이 분리가 되었다면 왼쪽은 왼쪽끼리 오른쪽은 오른쪽끼리 ..

CS/알고리즘 2021.10.18
반응형