본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다.
문제
저작권 문제가 될 수 있어 문제는 삭제합니다.
풀이 코드
let n = 15
let m = 14
var graph = [
[0,0,0,0,0,1,1,1,1,0,0,0,0,0],
[1,1,1,1,1,1,0,1,1,1,1,1,1,0],
[1,1,0,1,1,1,0,1,1,0,1,1,1,0],
[1,1,0,1,1,1,0,1,1,0,0,0,0,0],
[1,1,0,1,1,1,1,1,1,1,1,1,1,1],
[1,1,0,1,1,1,1,1,1,1,1,1,0,0],
[1,1,0,0,0,0,0,0,0,1,1,1,1,1],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0,0,1,1,1,1,1],
[0,1,1,1,1,1,1,1,1,1,1,0,0,0],
[0,0,0,1,1,1,1,1,1,1,1,0,0,0],
[0,0,0,0,0,0,0,1,1,1,1,0,0,0],
[1,1,1,1,1,1,1,1,1,1,0,0,1,1],
[1,1,1,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,0,0,0,1,1,1,1,1,1,1,1]
]
var result = 0
func dfs(x: Int, y: Int) -> Bool {
// 이동한 좌표가 n x m 범위안에 있는지 체크
if x <= -1 || x >= n || y <= -1 || y >= m {
return false
}
// 현재 위치가 방문하지 않았다면
if graph[x][y] == 0 {
// 방문 처리
graph[x][y] = 1
//상
dfs(x: x-1, y: y)
//하
dfs(x: x+1, y: y)
//좌
dfs(x: x, y: y-1)
//우
dfs(x: x, y: y+1)
return true
}
return false
}
for i in 0..<n {
for j in 0..<m {
if dfs(x: i, y: j) {
result += 1
}
}
}
print(result) // 8
'Algorithm > 이코테 문제풀이' 카테고리의 다른 글
| 정렬 - 위에서 아래로(Swift) (0) | 2022.08.09 |
|---|---|
| DFS/BFS - 미로 탈출(Swift) (0) | 2022.08.09 |
| 구현 - 게임 개발(Swift) (0) | 2022.06.11 |
| 구현 - 왕실의 나이트(Swift) (0) | 2022.06.11 |
| 구현 - 시각(Swift) (0) | 2022.06.10 |