본문 바로가기

N과M(7)2

[Swift][DFS] 백준 15657번 (N과M(8)) 요구능력 : DFS와 백트래킹에 대한 이해 코드설명 : N과M(7) 에서 비내림차순이 첨가되었다. 이전에도 비내림차순 관련문제가 있었는데, 이 문제는 시간적 효율성까지 따져서 막 풀다가는 시간초과에 걸리고 만다. 시간을 줄일 방법은 for문을 줄이는것이다. 줄인 방법을 설명하자면 다음과 같다. 4 2 9 8 7 1 예시를 이용해서 설명하자면, 원래대로라면 1 9 다음에 7 1이 나와야한다. 하지만, 비 내림차순이기 때문에 7뒤에는 7보다 작은 수가 나올 수 없다. 따라서, 이미 오름차순 정렬이 되어있는 arr배열의 for문의 시작을 이전 인덱스로 지정해주면 for문은 이전에 나온 수와 같거나 큰 수만 돌게된다. 그렇게되면 비 내림차순이 된다. 후기 : 예상치 못한 시간초과였다. 여태까지 푼 비내림차순은 .. 2021. 9. 30.
[Swift][DFS] 백준 15656번 (N과M(7)) 요구능력 : DFS와 백트래킹에 대한 이해 코드설명 : N과M(3) 에서 바뀐점은 수열을 지정해 줬다는 점이다. 시간초과로 애먹었는데, 이번 문제를 통해서 map()함수가 시간을 은근히 잡아먹는다는 걸 깨달았다. 시간초과가 났던 코드를 첨부해본다. let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nm[0] let m = nm[1] var arr = readLine()!.split(separator: " ").map{Int(String($0))!} arr.sort() var depth = 0 var resultStr = "" var result: [String] = [] func dfs(_ depth: Int){ if dep.. 2021. 9. 30.