본문 바로가기

분류 전체보기

(103)
[TIL 2024. 03. 20] 데이터베이스와 DBMS 컴퓨터의 보조기억장치는 '파일'과 '데이터'를 모두 저장합니다 파일은 파일 시스템에, 데이터는 데이터베이스에 저장되죠 파일 시스템이 칸 질러지지 않은 큰 창고와 같다면, 데이터베이스는 도서관과 같습니다 정보와 데이터 구분하기 정보란? : 여러종류로 흩어져 있어서 조합하기 어려운 단위 -> ex. 카톡 실행파일 in 파일 시스템 데이터란? : 정보를 체계적으로 분류하여 조합하기 용이한 단위 -> ex. 카톡 메세지 데이터 in 데이터베이스 데이터베이스 데이터베이스는 쉽게 말해 여러 응용시스템(프로그램)들이 공유해서 사용하는 데이터를 구조적으로 정리해서 통합해놓은 것이다. 따라서 데이터베이스는 여러 사용자에 의해 동시에 사용되고, 대규모일 수 밖에 없다. 데이터베이스가 저장하는 데이터의 종류는 프로그램 운영..
[TIL 2024. 03.19] 프로세스와 스레드 프로그램, 프로세스, 스레드 이 단어들을 처음 보면 개념을 혼동할 수도 있다 아래에서 이들에 대해 자세히 알아보자 프로그램 (Program) 프로그램은 컴퓨터에서 실행할 수 있는 파일을 통칭한다 단, 아직 파일을 실행하지 않은 상태이기 때문에 정확한 용어는 '정적 프로그램'(Static Program)이며, 이를 줄여서 우리는 프로그램(Program)이라고 부른다 다시 말해, 아직 파일이 저장 장치에 있고 메모리에는 올라가 있지 않은 정적인 상태를 말한다 어떤 프로그램을 개발하든지 개발자는 프로그래밍 언어(ex. 파이썬, 자바 등)를 이용하여 코드를 작성한다 즉, 프로그램은 간단히 생각하면 그냥 코드 덩어리이다 프로세스 (Process) 프로세스는 프로그램을 실행시켜 정적인 프로그램을 동적으로 변하게 하..
[TIL 2024. 03. 18] CS(1) 오늘 한 일 오늘의 코드카타 3문제 CS강의 1~3강 알고리즘 문제 복습: 다익스트라 CPU와 메모리 1. 컴퓨터의 구성 컴퓨터는 입출력 장치, CPU, 메모리(주기억장치), 보조기억장치로 구성된다 일종의 푸드트럭처럼 위의 구성요소를 어떻게 조합하느냐에 따라 다양한 형태의 컴퓨터를 만들 수 있고, 그 구체적인 구성요소는 다음과 같이 비교할 수 있다 출력장치=메뉴판, 픽업대 // 입력장치 = 주문대 CPU = 요리사 메모리 = 선반(DRAM,주기억장치), 조리대(SRAM, 캐시메모리(L2,L3)) 보조기억장치 = (푸드 트럭 아래 혹은 외부) 창고 2. 입출력 장치 출력 장치(메뉴판)을 보고 입력장치(주문대)를 통해 입력을 하면 다시 출력장치(픽업대) 등에서 출력을 받고, 이 과정을 반복할 수 있다 대표적..
[TIL 2024. 03. 15] Tree 자료구조 오늘한 일 오늘의 코드카타 오후 알고리즘 세션: 그래프 알고리즘 문제 복습: 1,2,3 더하기 (밍글데이) Tree 비선형 구조로써, 노드와 간선을 가지는 자료구조를 말한다 포함범위: 이진탐색트리 즉, 트리가 가장 포괄적인 자료구조이다. 이진탐색트리는 이진트리 중 탐색을 효율적으로 하기 위한 한 종류이며,(중위순회를 할 경우에) 가장 작은 수부터 가장 큰 수까지 차례대로 구할 수 있다. 따라서 이진탐색트리에서는 최솟값과 최댓값을 구하기 용이하다 이진탐색트리를 만족하지 않으면 이진트리(최대 자식 노드를 2개 가질 수 있는 트리)가 되며, 이진트리도 아니라면 그냥 트리라고 할 수 있다 이진트리의 종류 포화 이진트리: 모든 깊이가 포화상태인 이진트리 완전 이진트리: 노드 수가 n개 ..
[TIL 2024. 03. 14] DFS/BFS 오늘 한 일 오늘의 코드카타 오후 알고리즘 세션: tree, 이진탐색트리 알고리즘 문제 풀기: subtree, 이진탐색, 이진 힙 (swea) TIL 작성 DFS/BFS : 그래프 탐색 방법 1. dfs(깊이 우선 탐색, depth-first search) 사용하는 자료구조: stack / 원리: 재귀 주로 stack, 재귀함수 등으로 구현된다 dfs 구현시에는 방문 여부를 변수에 저장해주는 게 중요하다. 방문 여부를 저장해놓지 않으면, 재귀시에 이미 방문한 노드를 다시 방문하며, 제대로 된 출력값이 나오지 않게 된다 dfs에서 중요한 것은 '앞으로 방문할 노드'와 '이미 방문한 노드'를 기준으로 그래프를 탐색한다는 것이다 (사실 이 점은 bfs도 동일하게 중요하다!) nxt는 앞으로 방문할 노드 (cf..
[TIL 2024. 03. 13] 큐/우선순위큐 : 프린터 큐 오늘 한 일 오늘의 코드카타 7문제 오후 알고리즘 세션: bfs (queue활용) 알고리즘 문제 복습: 1로 만들기(while문 ver.(->시초)/dp ver.) TIL 작성 큐/우선순위큐 1. 큐(queue) 자료구조 중 stack이 LIFO이었다면, 큐는 stack과는 반대로 FIFO(First In First Out, 선입선출)의 자료구조이다 한쪽으로 들어가면, 다른 한쪽으로 빠지는 구조이므로 연산도 이에 맞춰서 사용해야 한다 => (append, popleft)가 함께 쓰이고, (appendleft, pop)이 함께 쓰인다 (cf. 디폴트는 오른쪽임) from collections import deque (필수) deque(데크, ): 양쪽 모두에서 in,out이 가능한 자료구조 => deque..
[TIL 2024. 03. 12] : 바이러스_dfs 오늘 한 일 오늘의 코드카타 8문제 오후 알고리즘 세션 알고리즘 문제 복습: 바이러스, 프린트 큐 위주 TIL 작성 바이러스(BOJ) 이 문제에서 배울 수 있는 중요 개념들은 다음과 같다 인접리스트 (cf. 인접행렬) => 특히, 쌍방향 visited 사용 dfs(깊이 우선 탐색 w.graph) + 재귀 대략적인 순서는.. 1. 입력을 받음 (N은 노드(컴퓨터)의 수, M은 연결 순써상의 수) 2. 노드 간 연결을 저장할 변수, visit여부를 저장할 변수(visited) 선언해야 함 단, 이때 변수를 선언할 때는 두 변수 다 인접리스트로 해야한다. 특히, 전자는 []로 초기화된 1차원의 인접리스트를 선언하고, 후자는 0으로 초기화된 1차원의 인접리스트를 선언해야 한다는 점이 중요하다. 또, 이 인접리스..
[TIL 2024. 03. 11] 오늘 한 일 오늘의 코드카타 10문제 오후 알고리즘 세션: stack(2) 알고리즘 문제: N과 M(1) 마무리, 연산자 끼워넣기 쇠막대기, 바이러스, 1로 만들기, 123 더하기 (복습) TIL 작성 오늘의 리뷰 1. N과 M(1) 기저조건 => 받은 입력값의 리스트 길이와 M이 같아질 때. 즉, 받은 입력값(숫자)를 모두 사용했을 때가 더 이상 쪼개질 수 없는 기저조건임. ==> 기저조건시의 프린트문에서 join은 str을 대상으로 하는 연산이므로, map함수를 이용하면 됨 나는 아무래도 보기 편하게 1부터 인덱스를 주는 게 좋음.. 단, 1로 시작할 거라면, 끝은 N+1이어야 한다는 것 주의하기! 백트래킹의 핵심 부분이 if문임. 해당 숫자가 ans의 리스트 안에 있는지 확인함으로써, 탐색 대상을 ..