1. 문제 접근 머리 쓰는게 오히려 독일 수 있다. 2. 문제 풀이 3. 문제 후기 문제 링크
문제 접근 dfs로 문제를 풀고 싶었는데 너무 많은 호출을 하게 되어서 dfs 대신에 bfs로 접근하였다. 하지만 bfs로도 문제가 풀기는 힘들었다. 문제를 하나 하나 뜯어보자. 문제 풀이 문제를 풀기 위해서 접근해야 할 것은 몇 번 카드부터 시작 할 것인가? ( 카드를 맞추는 순서는 어떻게 할 것인가? ) A -> B로 접근하기 위해서 가장 가까운 루트는 어떻게 구할 것인가? 이다. 하나씩 뜯어보자. 몇 번 카드부터 시작할 것인가? 1번부터 6번 카드까지 어떤 순서대로 풀어낼 것인가에 대해서는 순열을 통해서 문제를 풀어야한다. func permutate(_ elements: [Int]) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeatin..
문제 접근 & 문제 풀이 사실 완전 탐색이라는 것은 느낌이 왔다. 왜냐하면 최대가 5*5 짜리 발판이기 때문이다. 이러면 시간초과가 나는 일을 없을 것이라 생각이 들었다. 하지만 50% 이상 점수 맞기가 힘들었다. 결국은 못 풀고 해설지를 봤다. 음... 문제를 해석하고 그 해석을 코드를 얼마나 잘 구현하냐가 이 문제의 관건인것 같다. 그래서 이번에는 문제 풀이와 접근을 같이하려고 한다. 전체 코드 더보기 import Foundation func solution(_ board:[[Int]], _ aloc:[Int], _ bloc:[Int]) -> Int { let maxY = board.count - 1 let maxX = board[0].count - 1 let dy = [1, -1, 0, 0] let..