ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1759 암호만들기
    Algorithm/BOJ 2021. 2. 2. 12:08
    728x90

    출처: 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

    댓글

Designed by Tistory.