ํ๋ก๊ทธ๋๋จธ์ค - ์์ถ(Swift)
2022. 10. 18. 00:31ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - ์์ถ(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/17684
๋์ ํ์ด
์ด ๋ฌธ์ ๋ ํ๊ธด ํ์ง๋ง ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ์ ๋๋ฌํ์ ๋ breakํ ํ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผํ๋์ง ์ ๊ฐ์ด ์์์ ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ ธ๋ค.
๋ฌธ์ ์ ์๊ตฌ์ฌํญ๋๋ก ๊ตฌํ๋ง ํ๋ฉด ๋์ง๋ง ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ง๋๊ฒ ๋๋ฉด ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ณด๋ฉด์ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ๋ ๊ฒ ์ข์๋ฏํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ๋๋ฆฌ๋ฅผ UnicodeScalar๋ฅผ ์ด์ฉํด์ A~Z๊น์ง ์ ์ธํ๋ ๋ฐฉ๋ฒ๋ ์ต์ํด์ง๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
func solution(_ msg:String) -> [Int] {
var dic: [String: Int] = [:]
(0...25).forEach { i in
let key = String(UnicodeScalar(65+i)!)
dic[key] = i+1
}
var answer: [Int] = []
let arr = Array(msg).map{ String($0) }
var idx = 0
var str = arr[0]
while true {
if idx == arr.count-1 {
break
}
if dic[str] != nil {
str += arr[idx+1]
idx += 1
} else {
dic[str] = dic.values.max()! + 1
str.removeLast()
answer.append(dic[str]!)
str = arr[idx]
}
}
if dic[str] != nil {
answer.append(dic[str]!)
} else {
str.removeLast()
answer.append(dic[str]!)
answer.append(dic[arr[idx]]!)
}
return answer
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด
ํผ๋๋ฐฑ
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (0) | 2022.10.18 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ(Swift) (0) | 2022.10.18 |
ํ๋ก๊ทธ๋๋จธ์ค - ์คํ์ฑํ ๋ฐฉ(Swift) (0) | 2022.10.17 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ด์ค ํด๋ฌ์คํฐ๋ง(Swift) (1) | 2022.10.15 |
ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ฆฐํฐ(Swift) (0) | 2022.10.14 |