ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ชจ์Œ์‚ฌ์ „(Swift)

2022. 10. 21. 21:25ใ†ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค-Swift

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ชจ์Œ์‚ฌ์ „(Swift)

 

 

 ๋ฌธ์ œ ์„ค๋ช…

 

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 ๋‚˜์˜ ํ’€์ด

 

5๊ฐœ์˜ ์›์†Œ๋งŒ ๋Œ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํƒ์ƒ‰ DFS๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

 

import Foundation

func solution(_ word:String) -> Int {
    var dic: [String: Int] = [:]
    
    func DFS(_ L: Int, _ accStr: String) {
        if L != 0 {
            cnt += 1
            dic[accStr] = cnt    
        }
        if L == arr.count {
            return
        } else {
            for i in 0..<5 {
                DFS(L+1, accStr + arr[i])
            }
        }
    }
    
    let arr: [String] = ["A", "E", "I", "O", "U"]
    var cnt = 0
    DFS(0, "")
    
    
    return dic[word]!
}