-
백준 1759 암호만들기Algorithm/BOJ 2021. 2. 2. 12:08728x90
출처: https://www.acmicpc.net/problem/1759
분류: 백트래킹
접근방식
백트래킹 방식으로 풀어봤습니다.
완성한 암호가 모음 1개 자음 2개 이상인지 확인해야 하는 것만 주의하면 어렵지 않게 풀 수 있을 것 같네요!
체크하는 건 모음 set을 만들어두고 완성된 문자열과 교집합을 구해서 카운트하는 방식으로 풀어봤습니다 :)
해결방법
let lc = readLine()!.split(separator: " ").map { Int($0)! } var alphabets = readLine()!.split(separator: " ").sorted() var available = [Bool](repeating: true, count: lc[1]) var predicted: String = "" var vowel = Set<Character>("aeiou") func makeDecryption(idx: Int) { guard predicted.count != lc[0] else { let countOfVowel = vowel.intersection(predicted).count if countOfVowel >= 1, predicted.count - countOfVowel >= 2 { print(predicted) } return } for i in idx..<alphabets.count where available[i] { available[i] = false predicted.append(contentsOf: alphabets[i]) makeDecryption(idx: i+1) available[i] = true predicted.popLast() } } makeDecryption(idx: 0)
배운점
또 모음 1개 자음 2개를 빼먹어서 틀렸다. 문제를 잘 읽자 !!
'Algorithm > BOJ' 카테고리의 다른 글
백준 1992 쿼드트리 (0) 2021.02.18 백준 1926 그림 (0) 2021.02.05 백준 15649 N과 M(1) (0) 2021.01.28 백준 2252 줄 세우기 (0) 2021.01.27 백준 13904 과제 (0) 2021.01.27