[Swift][BFS] 백준 17086번 (아기상어2)
요구능력 : BFS 코드설명 : 후기 : 기초적인 BFS문제인것 같다. 아기상어보다 아기상어2 난이도가 훨씬낮다. let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nm[0] let m = nm[1] var arr = [[Int]]() let dx = [-1, 1, 0, 0, -1, 1, 1, -1] let dy = [0, 0, -1, 1, 1, -1, 1, -1] for _ in 0.. idx { let pop = queue[idx] let x = pop.0.0 let y = pop.0.1 let safeDistance = pop.1 idx += 1 if arr[x][y] == 1 { result.append(safeDis..
2022. 1. 28.
[Swift][BFS] 백준 1963번 (소수 경로)
요구능력 : BFS && 에라토스테네스의 체 코드설명 : 이 문제의 핵심 1) 비밀번호를 한 번에 한자리 밖에 못바꾼다. 2) 1000이상 9999이하의 범위만 가능하다. 3) 소수로만 단계를 거쳐야한다. 두 소수 사이의 변환에 필요한 최소 회수를 출력한다고 했으므로, BFS를 의심해본다. 1) 비밀번호를 한 번에 한자리 밖에 못바꾼다. 이 조건이 이 문제의 핵심인데, 비밀번호를 한 번에 한자리 바꾼다고 했으므로, 입력받은 수가 있으면 천의자리를 바꿔서 큐에넣고, 백의자리를 바꿔서 큐에넣고, 십의자리를 바꿔서 큐에넣고, 일의자리를 바꿔서 큐에넣는다. 이렇게 BFS로 풀어주면 된다는 생각이 들었다. 처음 큐에 입력받은 숫자를 넣은 뒤, 그 숫자의 천의자리, 백의자리, 십의자리, 일의자리를 추출해서 배열에 ..
2022. 1. 25.