bfs

https://www.acmicpc.net/problem/17071문제 설계수빈이와 동생이 같은 위치에 있는 경우를 찾는다. 단, 동생은 계속 이동하므로 같은 시간에 같은 위치에 있어야 한다. 문제 풀이import sysfrom collections import dequeinput=sys.stdin.readline#동생 이동은 가속 붙음#위치도 같고 시간도 같아야함n, k = map(int, input().split())visited = [[False]*2 for _ in range(500001)] q=deque()#위치, 시간q.append((n,0))visited[n][0]=Truetime=0safe=Falsewhile True: sister=k+time*(time+1)//2 ..
https://www.acmicpc.net/problem/11967문제 설계graph 배열을 이용해서 각 방에서 킬 수 있는 방의 위치를 저장방문과 불 여부를 확인하기 위해 배열 생성 bfs를 수행1. 그 방에서 불키고 바로 이동 가능한 경우2. 그 방에서 불켰으나 인접하지 않아서 나중에 확인해야 하는 경우문제 풀이import sysfrom collections import dequeinput=sys.stdin.readlineN,M=map(int,input().split())graph=[[[] for _ in range(N)] for _ in range(N)]for _ in range(M): x,y,a,b=map(int,input().split()) graph[x-1][y-1].append((..
https://www.acmicpc.net/problem/16920문제 풀이오답import sysfrom collections import dequefrom collections import Counterinput = sys.stdin.readlinen,m,p=map(int,input().split())s=[0]+list(map(int,input().split()))graph=[list(input().strip()) for _ in range(n)]# global safe#반복은 1~p까지 반복dx=[-1,1,0,0]dy=[0,0,-1,1]def bfs(target,q): # print(q) while q: x,y,move=q.popleft() for k in rang..
https://www.acmicpc.net/problem/6593문제 설계토마토 3차원 문제와 매우 유사하다.주어진대로 3차원 배열을 만들고 S를 시작점으로 하는 bfs를 E를 만날 때까지 수행하면 된다. 조건에 맞게 출력을 해준다. 문제 풀이import Foundationlet dx = [-1,1,0,0,0,0]let dy = [0,0,-1,1,0,0]let dz = [0,0,0,0,-1,1]while true { let input = readLine()!.split(separator:" ").map { Int($0)! } let L = input[0], R = input[1], C = input[2] if L == 0 && R == 0 && C == 0 { break ..
https://www.acmicpc.net/problem/5427문제 설계앞서 풀었던 문제를 N번 반복한다.앞 문제와 달리 행과 열의 입력 순서가 반대이므로 그걸 반영해준다. 그리고 불과 사람을 나타내는 문자도 다르므로 같이 반영한다.직전 문제에서는 시간을 출력하거나 IMPOSSIBLE을 출력하는데 이 문제는 케이스를 N번 반복해야하므로 플래그를 이용해준다.(플래그가 없다면 시간이랑 IMPOSSIBLE 문자열 둘 다 출력할 수도 있다.) 문제 풀이오답//// main.swift// ps//// Created by 손동현 on 5/15/25.//import Foundationlet dx=[-1,1,0,0]let dy=[0,0,-1,1]let N=Int(readLine()!)!for _ in 0..정답..
https://www.acmicpc.net/problem/2644문제 설계 사람 수 입력받기.그래프 준비 (부모-자식 양방향).visited 배열 [-1]로 만들기.큐에 시작 사람 a 넣고, visited[a]=0 표시하기.while 큐:하나 꺼내고연결된 사람들 보면서아직 방문 안했으면 방문표시 + 촌수 1 더하기큐에 다시 넣기visited[b] 출력하기.문제 풀이from collections import dequen=int(input())a,b=map(int,input().split())graph=[[] for _ in range(n+1)]m=int(input())for _ in range(m): x,y=map(int,input().split()) graph[x].append(y) gr..
https://www.acmicpc.net/problem/2638문제 설계처음에 외, 내부 공기를 어떻게 관리해야 할지 몰랐다.=> 2차원 배열을 이용해서 여부를 기록했다. 기능을 크게 2개로 구현1. 외, 내부 공기 여부 확인(치즈가 녹을 때마다 반복해서 확인)2. 치즈 녹이기녹은 치즈 반영을 바로 graph에 +1 해서 나중에 시간까지 구하려고 했는데 실패=> 녹은 치즈 좌표에 있는 값을 바로 바꾸는 게 아니라 따로 1차원 배열에 넣어준 후, 한 번에 다 녹임몇 개나 녹였는지 리턴3. 녹은 치즈가 0이라면 종료 문제 풀이from collections import dequen,m=map(int,input().split())graph=[list(map(int,input().split())) for _ i..
https://www.acmicpc.net/problem/2667문제풀이import sysinput=sys.stdin.readlinefrom collections import dequeN=int(input())#단지 지도 받기matrix=[]for _ in range(0,N): matrix.append(list(map(int,input().strip())))#방문 여부 판단하기 위해서 크기가 같은 지도 만들기visited= [[False for _ in range(0,N)] for _ in range(0,N)]#단지내 집의 수를 넣기 위한 리스트 만들기town=[]def bfs(x,y,matrix): house_cnt=1 dx=[0,1,0,-1] dy=[1,0,-1,0] vis..
SON!
'bfs' 태그의 글 목록