본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다.
문제
저작권 문제가 될 수 있어 문제는 삭제합니다.
풀이 코드
let n = 5
let m = 6
var graph = [
[1,0,1,0,1,0],
[1,1,1,1,1,1],
[0,0,0,0,0,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1]
]
var queue = [[Int]]()
// 상하좌우 이동 좌표
var step = [[-1,0],[1,0],[0,-1],[0,1]]
func dsf(x: Int, y: Int) -> Int {
// 현재 위치 큐에 삽입
queue.append([x,y])
// 큐가 빌때까지 반복
while !queue.isEmpty {
// 먼저 삽입된 노드 꺼냄
let front = queue.removeFirst()
let x = front[0]
let y = front[1]
for i in 0..<4 {
let moveX = front[0] + step[i][0]
let moveY = front[1] + step[i][1]
// n x m 범위를 벗어나면 다음방향
if moveX < 0 || moveX >= n || moveY < 0 || moveY >= m {
continue
}
// 괴물이 있는 부분이면 다음 방향
if graph[moveX][moveY] == 0 {
continue
}
// 괴물이 없는 부분이면
if graph[moveX][moveY] == 1 {
// 현재 위치에 이전 위치값 + 1
graph[moveX][moveY] = graph[x][y] + 1
// 현재 위치 좌표 큐에 삽입
queue.append([moveX,moveY])
}
}
}
return graph[n-1][m-1]
}
print(dsf(x: 0, y: 0)) // 10'Algorithm > 이코테 문제풀이' 카테고리의 다른 글
| 정렬 - 성적이 낮은 순서로 학생 출력하기(Swift) (0) | 2022.08.09 |
|---|---|
| 정렬 - 위에서 아래로(Swift) (0) | 2022.08.09 |
| DFS/BFS - 음료수 얼려먹기(Swift) (0) | 2022.08.09 |
| 구현 - 게임 개발(Swift) (0) | 2022.06.11 |
| 구현 - 왕실의 나이트(Swift) (0) | 2022.06.11 |