본문 바로가기

분류 전체보기

(208)
돌다리[백준 12761] https://www.acmicpc.net/problem/12761 방문의 이동 횟수를 잘 기록 해주면 된다. from collections import deque a,b,n,m = map(int, input().split())visited =[-1]*(100000+1 )def bfs(start): q = deque() q.append((start,0)) visited[start]=0 while q : x ,dist= q.popleft() if x == m : return dist if x+1
너구리 구구[백준 18126] https://www.acmicpc.net/problem/18126   from collections import dequedef bfs(start, graph, n): visit = [float('inf')] * (n + 1) visit[start] = 0 queue = deque([start]) while queue: current = queue.popleft() for neighbor, weight in graph[current]: if visit[neighbor] == float('inf'): visit[neighbor] = visit[current] + weight qu..
거리가 k이하인 트리 노드에서 사과 수확하기[백준 25516] https://www.acmicpc.net/problem/25516from collections import dequen, k = map(int, input().split())gra = [[] for _ in range(n)]for _ in range(n-1): a, b = map(int, input().split()) gra[a].append(b) gra[b].append(a)isapple = list(map(int, input().split()))visit = [0] * ndef bfs(start): q = deque() q.append((start, 0)) # (현재 노드, 깊이) visit[start] = 1 ans = 0 # 사과 개수 if isap..
영상처리[백준 21938] https://www.acmicpc.net/problem/21938from collections import deque import sysn, m = map(int, input().split())data = []dx = [1,-1,0,0] dy = [0,0,1,-1]for _ in range(n): row = list(map(int, input().split())) data.append(row)T = int(input())visit = [[0]*(m) for _ in range(n)]cnt = 0 new_arr = [[0 for _ in range(m)] for _ in range(n)]for i in range(n): for j in range(m): r, g, b = da..
현수막[백준 14716] https://www.acmicpc.net/problem/14716 from collections import deque n,m =map(int, input().split())arr =[]dx =[1,-1,0,0,1,-1,1,-1]dy =[0,0,1,-1,1,-1,-1,1]ans = 0 for _ in range(n): oneline = list(map(int, input().split())) arr.append(oneline ) def bfs(i,j ) : q = deque() arr[i][j] = 2 q.append((i,j)) while q : x,y = q.popleft() for i in range(8): ..
숨바꼭질[백준 6118] https://www.acmicpc.net/problem/6118  from collections import deque n,m =map(int, input().split())gra = [[] for _ in range(n+1)]def bfs(t) : q = deque() q.append(t) visit[t] = 1 while q: node = q.popleft() for nextnode in gra[node] : if visit[nextnode]==0 : visit[nextnode] = visit[node]+1 q.append(nextnode)for _ in range(m) : ..
창영이와 점프[백준 22114] https://www.acmicpc.net/problem/22114 두 포인터를 사용해서 해결하면 된다. n, k = map(int, input().split())arr = list(map(int, input().split()))l, ans, j = 0, 0, 0for r in range(n - 1): if arr[r] > k: j += 1 while j > 1: if arr[l] > k: # 점프 복구 j -= 1 l += 1 ans = max(ans, r - l + 1 + 1) print(ans)
간식 파티 [백준 20162] https://www.acmicpc.net/problem/20162  n = int(input())arr= []for _ in range(n): k = int(input()) arr.append(k) dp = [0 for _ in range(n)]dp[0] = arr[0] for i in range(1, n): dp[i] = arr[i] for j in range(i-1, -1,-1): if arr[j]