๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

[Swift] 2021 KAKAO INTERNSHIP ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

by Fomagran ๐Ÿ’ป 2021. 7. 18.
728x90
๋ฐ˜์‘ํ˜•

 

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

๋„ค์˜ค์™€ ํ”„๋กœ๋„๊ฐ€ ์ˆซ์ž๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์—๊ฒŒ ์ˆซ์ž๋ฅผ ๊ฑด๋„ฌ ๋•Œ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ์นด๋“œ๋ฅผ ๊ฑด๋„ค์ฃผ๋ฉด ํ”„๋กœ๋„๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž

programmers.co.kr


Solution

 

1. ์˜๋‹จ์–ด ์ค‘ 2๋ฒˆ์งธ๊นŒ์ง€๋ฅผ key๊ฐ’์œผ๋กœ ํ•˜๊ณ  value๊ฐ’์œผ๋กœ ์˜๋‹จ์–ด์˜ ๊ธธ์ด์™€ ์˜๋ฏธํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

 let allNumber = ["ze":[4,0],"on":[3,1],"tw":[3,2],"th":[5,3],"fo":[4,4],"fi":[4,5],"si":[3,6],"se":[5,7],"ei":[5,8],"ni":[4,9]]

 

2. s๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ˆซ์ž์ธ ๊ฒฝ์šฐ์™€ ๋ฌธ์ž์ธ ๊ฒฝ์šฐ๋กœ ์ •๋‹ต์„ ์™„์„ฑํ•œ๋‹ค.

 

๋ฌธ์ž๊ฐ€ ์ˆซ์ž์ธ ๊ฒฝ์šฐ answer์— ์ถ”๊ฐ€ํ•˜๊ณ  ์•„๋‹Œ ๊ฒฝ์šฐ๋Š” 2๋ฒˆ์งธ ๊ธ€์ž๋ฅผ allNumber์— ๋Œ€์ž…ํ•ด 0๋ฒˆ์งธ๋Š” ๊ธธ์ด์ด๋ฏ€๋กœ x์— ๋”ํ•ด์ฃผ๊ณ 

 

1๋ฒˆ์งธ๋Š” ์ˆซ์ž์ด๋ฏ€๋กœ answer์— ๋„ฃ์–ด์ค€๋‹ค.

 

 var answer:String = ""
    let map = s.map{$0}
    
    var x = 0
    
    while x < s.count {
        if map[x].isNumber {
            answer += String(map[x])
            x += 1
        }else {
            let str = String(map[x...x+1])
            answer += String(allNumber[str]![1])
            x += allNumber[str]![0]
        }
    }

 

3. answer๋ฅผ Intํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•œ๋‹ค.

 

return Int(answer)!

Source Code

 

 


P.S

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด ์ค‘ replacingOccurrences ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด ๋งŽ์•˜๋‹ค.

 

func solution(_ s:String) -> Int {

    let hash = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    var str = s

    for i in 0...9 {
        str = str.replacingOccurrences(of: hash[i], with: String(i))
    }

    return Int(str)!
}

 

์ฝ”๋“œ๋Š” ํ›จ์”ฌ ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑ์ด ๋˜์ง€๋งŒ ๊ฒฐ๊ตญ ์•ˆ์— ํฌํ•จ๋˜๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๋ชจ๋‘ ์ˆœํšŒํ•˜๋ฏ€๋กœ

 

ํšจ์œจ์€ ๋ณ„๋กœ ์ข‹์•„๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€