Algorithm/Baekjoon
-
[Python][C++] 1927번 최소 힙Algorithm/Baekjoon 2024. 7. 7. 16:16
문제https://www.acmicpc.net/problem/1927 코드1. Pythonimport sysimport heapqinput = sys.stdin.readlineheap = []for _ in range(int(input())): x = int(input()) if x: # x가 0이 아니면 힙에 x를 추가 heapq.heappush(heap, x) else: # x가 0이면 힙에서 최솟값을 제거하고 출력 # 만약 힙이 비어있으면 0을 출력 print(heapq.heappop(heap) if heap else 0) 2. C++#include #include #include using namespace std;i..
-
[Python][C++] 1764번 듣보잡Algorithm/Baekjoon 2024. 7. 6. 21:29
문제https://www.acmicpc.net/problem/1764 코드1. Pythonimport sys# 입력을 빠르게 받기 위해 사용input = sys.stdin.readline# 듣도 못한 사람의 수 n과 보도 못한 사람의 수 m 입력n, m = map(int, input().split())# 듣도 못한 사람의 이름을 저장할 집합 s1s1 = set()# 보도 못한 사람의 이름을 저장할 집합 s2s2 = set()for _ in range(n): s1.add(input().strip()) for _ in range(m): s2.add(input().strip())# 두 집합의 교집합을 구하고 정렬하여 리스트로 변환s = sorted(s1 & s2)print(len(s))for..
-
[Python][C++] 1697번 숨바꼭질Algorithm/Baekjoon 2024. 7. 6. 20:49
문제https://www.acmicpc.net/problem/1697 코드1. Pythonfrom collections import dequedef bfs(): q = deque() q.append(n) # 시작점 n을 큐에 추가 while q: # 큐가 비어있지 않을 동안 반복 x = q.popleft() # 큐의 첫 번째 요소를 꺼냄 if x == k: # 현재 위치가 동생의 위치(k)와 같다면 print(dist[x]) # 이동 횟수를 출력 break # 탐색을 종료 for nx in (x - 1, x + 1, x * 2): # 이동 가능한 위치들에 대해 반복 if 0 2..
-
[Python][C++] 1620번 나는야 포켓몬 마스터 이다솜Algorithm/Baekjoon 2024. 7. 5. 23:15
문제https://www.acmicpc.net/problem/1620 코드1. Pythonimport sysinput = sys.stdin.readlinen, m = map(int, input().split())dic = {}# 'n'개의 이름을 입력받아 딕셔너리에 추가하는 루프for i in range(1, n + 1): a = input().rstrip() # 이름을 입력받아 공백을 제거한 후 변수 'a'에 저장 dic[a] = str(i) # 이름을 키로, 번호 'i'를 문자열로 변환하여 값으로 딕셔너리에 저장 dic[str(i)] = a # 번호 'i'를 문자열로 변환하여 키로, 이름을 값으로 딕셔너리에 저장# 'm'개의 쿼리를 처리하는 루프for _ in range(m..
-
[Python][C++] 1541번 잃어버린 괄호Algorithm/Baekjoon 2024. 7. 5. 15:54
문제https://www.acmicpc.net/problem/1541 코드1. Python# 입력을 받아 '-'를 기준으로 분할s = list(input().split("-"))ans = 0# '-'로 분할된 각 부분에 대해 처리for i in range(len(s)): # 현재 부분을 '+'를 기준으로 분할하여 각각의 숫자를 더하거나 뺌 for j in s[i].split("+"): if i == 0: # 첫 번째 부분은 더함 ans += int(j) else: # 나머지 부분은 뺌 ans -= int(j)print(ans) 2. C++#include #include #include u..
-
[Python][C++] 1463번 1로 만들기Algorithm/Baekjoon 2024. 7. 5. 02:38
문제https://www.acmicpc.net/problem/1463 코드1. Pythonn = int(input())dp = [0] * (n+1)for i in range(2, n + 1): dp[i] = dp[i-1] + 1 if i % 3 == 0: dp[i] = min(dp[i//3] + 1, dp[i]) if i % 2 == 0: dp[i] = min(dp[i//2] + 1, dp[i])print(dp[n]) 2. C++ 1. DP#include #include #include using namespace std;int main() { int n; cin >> n; vector dp(n + 1, 0); // dp[i..
-
[Python][C++] 1389번 케빈 베이컨의 6단계 법칙Algorithm/Baekjoon 2024. 7. 5. 01:29
문제https://www.acmicpc.net/problem/1389 코드1. Pythonimport sysfrom collections import dequeinput = sys.stdin.readline# BFS 함수 정의, 특정 시작 노드에서 모든 노드까지의 거리의 합을 계산def bfs(start): num = [0] * (n + 1) # 각 노드까지의 거리를 저장할 배열 q = deque() # BFS 수행을 위한 덱 visited[start] = 1 # 시작 노드 방문 표시 q.append(start) # 시작 노드를 큐에 삽입 # 큐가 빌 때까지 반복 while q: a = q.popleft() # 큐에서 노드 추출 fo..
-
[Python][C++] 1260번 DFS와 BFSAlgorithm/Baekjoon 2024. 7. 5. 00:39
문제https://www.acmicpc.net/problem/1260 코드1. Pythonn, m, v = map(int, input().split())graph = [[0] * (n + 1) for _ in range(n + 1)]# 방문 상태를 체크할 리스트 (DFS와 BFS 각각에 대해 별도로 관리)visited = [0] * (n + 1)visited2 = [0] * (n + 1)# m개의 간선 정보를 받아서 그래프를 구성for _ in range(m): a, b = map(int, input().split()) graph[a][b] = 1 # a에서 b로 가는 간선 graph[b][a] = 1 # b에서 a로 가는 간선 (양방향)# 깊이 우선 탐색 함수def dfs(V): ..