코딩 테스트/Baekjoon
백준 온라인 져지 문제 중 풀이해본 문제들의 해결 과정과 코드를 공유하는 내용을 담습니다.
-
문제 보기 : 2293번: 동전 1 문제정답률 : 47%작성 코드n,num = map(int,input().split())coins = [int(input()) for _ in range(n)]# num보다 작은 코인만 셀렉coins = [c for c in coins if c 풀이동적 프로그래밍으로 각 금액을 만드는 방법의 수를 누적 계산하는 방법을 사용했다. dd[x]를 금액 x를 만들 수 있는 경우의 수로 정의한 셈이다.먼저 dd라는 리스트가 num+1개의 0을 가지도록 정의하고, dp[0] = 1로 초기화했다. (0원을 만드는 방법은 1가지라는 뜻)그리고 각 동전에 대해, 해당 동전을 사용해 만들 수 있는 금액을 갱신하는데, dp[amount] += dp[amount - coin]으로 현재 금액..
G4 2293. 동전 1문제 보기 : 2293번: 동전 1 문제정답률 : 47%작성 코드n,num = map(int,input().split())coins = [int(input()) for _ in range(n)]# num보다 작은 코인만 셀렉coins = [c for c in coins if c 풀이동적 프로그래밍으로 각 금액을 만드는 방법의 수를 누적 계산하는 방법을 사용했다. dd[x]를 금액 x를 만들 수 있는 경우의 수로 정의한 셈이다.먼저 dd라는 리스트가 num+1개의 0을 가지도록 정의하고, dp[0] = 1로 초기화했다. (0원을 만드는 방법은 1가지라는 뜻)그리고 각 동전에 대해, 해당 동전을 사용해 만들 수 있는 금액을 갱신하는데, dp[amount] += dp[amount - coin]으로 현재 금액..
2024.12.15 -
문제 보기 : 11286번: 절댓값 힙 문제정답률 : 57%작성 코드import heapqimport sysinput = sys.stdin.readline# 연산의 개수 입력n = int(input())# 힙 초기화calcul = []for _ in range(n): x = int(input()) if x != 0: # 힙에 (절댓값, 원래값) 형태로 저장 heapq.heappush(calcul, (abs(x), x)) else: if calcul: # 절댓값이 가장 작은 값을 출력하고 제거 print(heapq.heappop(calcul)[1]) else: # 힙이 비어있으면 ..
S1 11286. 절댓값 힙문제 보기 : 11286번: 절댓값 힙 문제정답률 : 57%작성 코드import heapqimport sysinput = sys.stdin.readline# 연산의 개수 입력n = int(input())# 힙 초기화calcul = []for _ in range(n): x = int(input()) if x != 0: # 힙에 (절댓값, 원래값) 형태로 저장 heapq.heappush(calcul, (abs(x), x)) else: if calcul: # 절댓값이 가장 작은 값을 출력하고 제거 print(heapq.heappop(calcul)[1]) else: # 힙이 비어있으면 ..
2024.12.15 -
문제 보기 : 10866번: 덱 문제정답률 : 56%작성 코드from collections import dequeimport sysinput = sys.stdin.readlinen = int(input().strip())dd = deque()for _ in range(n): k = input().rstrip() #--------------------- if k == 'pop_front': # 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력 if dd: print(dd.popleft()) # 덱에 들어있는 정수가 없는 경우에는 -1을 출력 else: print(-1) elif k == 'pop_..
S4 10866. 덱문제 보기 : 10866번: 덱 문제정답률 : 56%작성 코드from collections import dequeimport sysinput = sys.stdin.readlinen = int(input().strip())dd = deque()for _ in range(n): k = input().rstrip() #--------------------- if k == 'pop_front': # 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력 if dd: print(dd.popleft()) # 덱에 들어있는 정수가 없는 경우에는 -1을 출력 else: print(-1) elif k == 'pop_..
2024.12.15 -
문제 보기 : 10816번: 숫자 카드 2 문제정답률 : 38% 작성 코드# 입력받은 전체 숫자의 개수 (사용되진 않음)T = int(input())# 전체 숫자 리스트 입력받기ls = list(map(int, input().split()))# 숫자의 등장 횟수를 저장할 딕셔너리 초기화dicc = {}for i in ls: # 숫자가 이미 딕셔너리에 있다면 등장 횟수 1 증가 if i in dicc: dicc[i] += 1 # 딕셔너리에 없다면 초기값으로 1 저장 else: dicc[i] = 1# 탐색할 숫자의 개수 (사용되진 않음)n = int(input())# 탐색할 숫자 리스트 입력받기ls = list(map(int, input().split()))#..
S4 10816번: 숫자 카드 2문제 보기 : 10816번: 숫자 카드 2 문제정답률 : 38% 작성 코드# 입력받은 전체 숫자의 개수 (사용되진 않음)T = int(input())# 전체 숫자 리스트 입력받기ls = list(map(int, input().split()))# 숫자의 등장 횟수를 저장할 딕셔너리 초기화dicc = {}for i in ls: # 숫자가 이미 딕셔너리에 있다면 등장 횟수 1 증가 if i in dicc: dicc[i] += 1 # 딕셔너리에 없다면 초기값으로 1 저장 else: dicc[i] = 1# 탐색할 숫자의 개수 (사용되진 않음)n = int(input())# 탐색할 숫자 리스트 입력받기ls = list(map(int, input().split()))#..
2024.12.10 -
문제 보기 : 7562번: 나이트의 이동 문제정답률 : 52%작성 코드from collections import deque# 체스판 위 기사(Knight)의 이동 방향directions = [(-2,-1),(-1,-2),(-2,1),(-1,2),(2,-1),(1,-2),(2,1),(1,2)]## 기사의 이동def knight(graph,start): graph[start[0]][start[1]]=0 visited[start[0]][start[1]]=True dd = deque([start]) while dd: x,y = dd.popleft() for dx,dy in directions: xx= x+dx; yy = y+dy ..
S1 7562. 나이트의 이동문제 보기 : 7562번: 나이트의 이동 문제정답률 : 52%작성 코드from collections import deque# 체스판 위 기사(Knight)의 이동 방향directions = [(-2,-1),(-1,-2),(-2,1),(-1,2),(2,-1),(1,-2),(2,1),(1,2)]## 기사의 이동def knight(graph,start): graph[start[0]][start[1]]=0 visited[start[0]][start[1]]=True dd = deque([start]) while dd: x,y = dd.popleft() for dx,dy in directions: xx= x+dx; yy = y+dy ..
2024.12.09 -
문제 보기 : 4963번: 섬의 개수 문제정답률 : 49%작성 코드from collections import deque # 8방향 탐색을 위한 방향 벡터 정의 (상하좌우+대각선)directions = [(1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, 1), (1, -1), (-1, -1)]# 섬 탐색 함수 정의 (BFS 사용)def island(graph, start): graph[start[1]][start[0]] = 0 # 시작점을 방문 처리 (0으로 설정) visited[start[1]][start[0]] = True # 방문 여부 기록 count = 1 # 섬 크기(1의 개수) 카운트 dd = deque([start]) whi..
S2 4963. 섬의 개수문제 보기 : 4963번: 섬의 개수 문제정답률 : 49%작성 코드from collections import deque # 8방향 탐색을 위한 방향 벡터 정의 (상하좌우+대각선)directions = [(1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, 1), (1, -1), (-1, -1)]# 섬 탐색 함수 정의 (BFS 사용)def island(graph, start): graph[start[1]][start[0]] = 0 # 시작점을 방문 처리 (0으로 설정) visited[start[1]][start[0]] = True # 방문 여부 기록 count = 1 # 섬 크기(1의 개수) 카운트 dd = deque([start]) whi..
2024.12.09 -
문제 보기 : 11725번: 트리의 부모 찾기 문제정답률 : 42% 작성 코드import sysinput = sys.stdin.readline# 입력 처리T = int(input()) # 노드의 개수 입력graph = [[] for _ in range(T+1)] # 노드의 연결 정보를 저장할 그래프 초기화# 트리 구조 입력for _ in range(T-1): a, b = map(int, input().split()) # 연결된 두 노드 입력 graph[a].append(b) # 양방향 그래프 구성 graph[b].append(a)mama = [0] * (T+1) # 각 노드의 부모를 저장할 리스트 초기화from collections import deque # BFS를 위한..
S2 11725. 트리의 부모 찾기문제 보기 : 11725번: 트리의 부모 찾기 문제정답률 : 42% 작성 코드import sysinput = sys.stdin.readline# 입력 처리T = int(input()) # 노드의 개수 입력graph = [[] for _ in range(T+1)] # 노드의 연결 정보를 저장할 그래프 초기화# 트리 구조 입력for _ in range(T-1): a, b = map(int, input().split()) # 연결된 두 노드 입력 graph[a].append(b) # 양방향 그래프 구성 graph[b].append(a)mama = [0] * (T+1) # 각 노드의 부모를 저장할 리스트 초기화from collections import deque # BFS를 위한..
2024.12.09 -
문제 보기 : 18258번: 큐 2 문제정답률 : 32%작성 코드from collections import dequeimport sysinput = sys.stdin.readlinen = int(input().strip())dd = deque()for _ in range(n): k = input().rstrip() if k == 'pop': if dd: print(dd.popleft()) else: print(-1) elif k == 'size': print(len(dd)) elif k == 'empty': if dd: print(0) else: ..
S4 18258. 큐 2문제 보기 : 18258번: 큐 2 문제정답률 : 32%작성 코드from collections import dequeimport sysinput = sys.stdin.readlinen = int(input().strip())dd = deque()for _ in range(n): k = input().rstrip() if k == 'pop': if dd: print(dd.popleft()) else: print(-1) elif k == 'size': print(len(dd)) elif k == 'empty': if dd: print(0) else: ..
2024.12.09