
링크 : https://www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌은 세 개의 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려 www.acmicpc.net 코드 def BFS(s): visited = [[False] * (total + 1) for _ in range(total+1)] a,b = s[0],s[1] Q = deque() Q.append((a,b)) visited[a][b] = True while Q: x,y = Q.popleft() z = total - x - y if x == y == z: return True for ..

링크 : https://www.acmicpc.net/problem/11812 11812번: K진 트리 첫째 줄에 N (1 ≤ N ≤ 1015)과 K (1 ≤ K ≤ 1 000), 그리고 거리를 구해야 하는 노드 쌍의 개수 Q (1 ≤ Q ≤ 100 000)가 주어진다. 다음 Q개 줄에는 거리를 구해야 하는 두 노드 x와 y가 주어진다. (1 ≤ x, y www.acmicpc.net 문제 코드 - 맨 처음 제출한 코드 import sys input = sys.stdin.readline def getDepth(node): i,cnt = 0,0 while 1: cnt += k**i if cnt >= node: return i i += 1 def getParent(node): return (node-2)//k ..

링크 : https://www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 코드 n, k = map(int, input().split()) n_len = len(str(n)) s1, s2 = set(), set() s1.add(n) for _ in range(k): while s1: x = str(s1.pop()) for i in range(n_len-1): for j in range(i+1, n_len): if x[j] == '0' and i == 0: continue y = x[:i] + x[j] + x[i+1:j] + x..

링크 : https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 문제 코드 import sys input = sys.stdin.readline def belman_ford(start): dist[start] = 0 for i in range(1,n+1): for j in range(m): now, next, weight = graph[j] if dist[now] != 1e9 and dist[..

링크 : https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 문제 코드 import heapq, sys input = sys.stdin.readline n = int(input()) maxHeap, minHeap = [],[] mid = int(input()) print(mid) for _ in range(1,n): num = int(input()) # mid보다 작다면 maxHeap, 크다면 minHeap에 넣는다. heapq.h..

링크 : https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 문제 코드 import sys input = sys.stdin.readline T = int(input()) for test_case in range(T): n = int(input()) arr = sorted([input().rstrip() for _ in range(n)]) for i in range(n-1): if arr[i] == arr[i+1][:len(a..