목록전체 글 (271)
DHistory
벌써 3년차 개발자가 되었다. 현재 공부한 내용과 앞으로 공부할 내용을 기반으로 개략적인 Road Map을 만들었다. 목표가 보이지 않으니 쳐지고 어디까지 공부했는지 가늠이 가지 않았다. Road Map을 통해 부족한 부분은 보완하고 터득해야할 기술 및 지식은 습득하며 성장할 예정이다. 아는 내용(= 누군가에게 개념을 설명할 수 있다. + Trouble Shooting 경험)은 정말 아는 내용인지 재정리할 예정이다. 2024년에 1Q가 끝난 시점에 Road Map을 재확장해나가자. 내가 필요하다고 생각하는 내용이기 때문에 상황에 따라 필요하지 않을 수 있다.
문제 1082번: 방 번호 첫째 줄에 N이 주아진다. 둘째 줄에는 공백으로 구분된 P0, ..., PN-1이 주어진다. 마지막 줄에는 M이 주어진다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) p = list(map(int, sys.stdin.readline().rstrip().split()))[:n] m = int(sys.stdin.readline().rstrip()) d = [0] * (m + 1) # 큰 값을 구해야하므로, 큰 값부터 넣는다. for i in range(n - 1, -1, -1): # 숫자의 가격부터 의미가 있으므로 p[i]로 설정한다. for j in range(p[i], m + 1): # 현재 숫자의..
문제 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 풀이 1. root node는 여러 개일 수 있다. 2. 제거할 node는 연결 그래프를 만들지 않는다. 3. 제거할 node이거나 이미 방문한 경우라면 탐색을 종료한다. 4. Leaf Node인 경우 탐색을 종료하고 Count한다. import sys n = int(sys.stdin.readline().rstrip()) nodes = [[] for _ in range(n)] parent = list(map(int, sys.stdin.readline(..
문제 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 풀이 진실을 아는 인원가 같은 집합에 속한 경우 진실을 아는 경우로 생각한다. 서로소 집합(disjoint sets)을 활용하여 진실을 아는 집합을 구한다. import sys import itertools n, m = map(int, sys.stdin.readline().rstrip().split()) knows = list(map(int, sys.stdin.readline().rstrip().split()))[1:] parties = [] parent = [i f..
문제 1041번: 주사위 첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수 www.acmicpc.net 풀이 같은 색이 지정된 면은 평행하기 때문에 어느 한 면을 선택한다면, 다른 면은 선택할 수 없다. N^3개의 주사위로 정육면체를 만든다면 주사위의 면을 1개만 사용하는 경우, 주사위의 면을 2개만 사용하는 경우, 주사위의 면을 3개만 사용하는 경우가 있다. N x N(N은 2이상)으로 정육면체를 만들었을 경우 아래 사진처럼 정육면체를 만들 수 있다. 노란색 부분: 주사위의 면을 1개 사용하는 경우 (최상층을 제외하고 한 면을 기준으..