practivceAlgorithm/백준 379

[백준][Python] 16928 뱀과 사다리게임

portal만들고 중복체크만해줌. import sys input = sys.stdin.readline from collections import deque def bfs(start): q = deque() q.append((start,0)) visited[start] = True while q: cur_node, cnt = q.popleft() for i in range(1,7): next_node = cur_node+i if next_node >= 100: return cnt+1 if visited[next_node]: continue visited[next_node] = True if next_node in port: if not visited[port[next_node]]: visited[port[..

[백준][Python] 19542 전단지 돌리기

거리가 D이상인 노드들에 대해 거리 측정. max_d는 리프노드로부터의 거리. import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) def dfs(cur_node, pre_node): global ans max_d = 0 for next_node in graph[cur_node]: if next_node != pre_node: max_d = max(max_d,dfs(next_node, cur_node)) if max_d >= D: ans += 1 return max_d + 1 N, S, D = map(int, input().split()) graph = {i: [] for i in range(1,N+1)} visited = [0] * (N..

[백준][Python] 21314 민겸수

다 구할필요없다. 최소 최대를 만드는 조건만 적용하면 된다. import sys input = sys.stdin.readline minkyum = input().rstrip() n = len(minkyum) max_v = '' left = 0 for i in range(n): if minkyum[i]=='K': max_v += '5' + '0'*(i - left) left = i+1 if minkyum[n-1] =='M': max_v += '1'*(n - left) min_v = '' left = 0 for i in range(n): if minkyum[i]=='K': if i>0 and minkyum[i-1]=='M': min_v += str(10**(i-left-1)) min_v += '5' left..

[백준][Python] 2143 두 배열의 합

배열이 두개면 matching으로 풀면된다. A+B = T -> T - A = B import sys input = sys.stdin.readline from collections import defaultdict T = int(input()) n = int(input()) arr_a = list(map(int, input().split())) check = defaultdict(int) for k in range(1, n+1): left = 0 s = 0 for right in range(n): s += arr_a[right] if right - left == k-1: check[T - s] += 1 s -= arr_a[left] left += 1 ans = 0 m = int(input()) arr_b..

[백준][Python] 2138 전구와 스위치

처음을 누르고 시작하는 방법과 그렇지 않은 방법 두 가지 중 유효한 최솟값으로 간다. import sys input = sys.stdin.readline def change(now, cnt): if cnt == 1: now[0] ^= 1 now[1] ^= 1 for i in range(1, n-1): if now[i-1] != target[i-1]: cnt += 1 now[i-1] ^= 1 now[i] ^= 1 now[i+1] ^= 1 if now[n-2] != target[n-2]: cnt += 1 now[n-2] ^= 1 now[n-1] ^= 1 return cnt if now == target else float('inf') n = int(input()) now = list(map(int, inpu..