KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

DFS/BFS - 미로 탈출(Swift)
Algorithm/이코테 문제풀이

DFS/BFS - 미로 탈출(Swift)

2022. 8. 9. 10:00
본 내용은 '이것이 취업을 위한 코딩테스트다 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
    'Algorithm/이코테 문제풀이' 카테고리의 다른 글
    • 정렬 - 성적이 낮은 순서로 학생 출력하기(Swift)
    • 정렬 - 위에서 아래로(Swift)
    • DFS/BFS - 음료수 얼려먹기(Swift)
    • 구현 - 게임 개발(Swift)
    KWiOS
    KWiOS

    티스토리툴바