본문 바로가기

백준177

[Swift][DFS] 백준 1759번 (암호만들기) 요구능력 : DFS와 백트래킹에 대한 이해 코드설명 : N과M(8) 문제로 선행학습을 하고 풀면 정말 효율적일거같다. 안푸셨다면 풀고오시길... N과M(8)에서 바뀐부분 1. 숫자가 아닌 알파벳이라는 점 2. for문을 이용하여 자음이 2개이상, 모음이 1개이상인지 판별 후기 : 우연찮게 이 문제를 접하게됬는데 N과M(8)과 거의 유사한문제다.. 자음 2개이상과 모음1개이상이 들어갔는지만 판별하면 되는 문제였다.. 골드문제를 처음으로 15분도안걸려서 풀었다. 시간초과가 날거같았는데, 2초인거보고 안심... let LC = readLine()!.split(separator: " ").map{Int(String($0))!} let L = LC[0] let C = LC[1] let arr = readLine(.. 2021. 10. 1.
[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.
[Swift][DFS][백트래킹] 백준 15655번 (N과 M (6)) 요구능력 : DFS와 백트래킹에 대한 이해 코드설명 : N과M(5) 에서 바뀐점은 조건이 하나 추가됐는데, depth가 충족했을 때 오름차순인지 검사하고 결과문자열에 추가해준다. 후기 : 저번 N과M중에서도 오름차순인것만 출력하는 문제를 풀었는데 그 때는 비효율적으로 for문으로 하나씩 다돌려본거같다. 이번에는 그 때보다는 효율적인 방법으로 푼것같다. 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))!} var depth: Int = 0 var resultStr: String .. 2021. 9. 30.