๋ฐ์ํ
ํ๋ก๊ทธ๋๋จธ์ค LV.1 ๋ชจ์
์์ ์ํธ
๋ฌธ์ ์ค๋ช
์ด๋ค ๋ฌธ์ฅ์ ๊ฐ ์ํ๋ฒณ์ ์ผ์ ํ ๊ฑฐ๋ฆฌ๋งํผ ๋ฐ์ด์ ๋ค๋ฅธ ์ํ๋ฒณ์ผ๋ก ๋ฐ๊พธ๋ ์ํธํ ๋ฐฉ์์ ์์ ์ํธ๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "AB"๋ 1๋งํผ ๋ฐ๋ฉด "BC"๊ฐ ๋๊ณ , 3๋งํผ ๋ฐ๋ฉด "DE"๊ฐ ๋ฉ๋๋ค. "z"๋ 1๋งํผ ๋ฐ๋ฉด "a"๊ฐ ๋ฉ๋๋ค. ๋ฌธ์์ด s์ ๊ฑฐ๋ฆฌ n์ ์ ๋ ฅ๋ฐ์ s๋ฅผ n๋งํผ ๋ฏผ ์ํธ๋ฌธ์ ๋ง๋๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์.
์ ํ ์ฌํญ
- ๊ณต๋ฐฑ์ ์๋ฌด๋ฆฌ ๋ฐ์ด๋ ๊ณต๋ฐฑ์ ๋๋ค.
- s๋ ์ํ๋ฒณ ์๋ฌธ์, ๋๋ฌธ์, ๊ณต๋ฐฑ์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- s์ ๊ธธ์ด๋ 8000 ์ดํ์ ๋๋ค.
- n์ 1 ์ด์, 25 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
s | n | result |
"AB" | 1 | "BC" |
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
์ ์ถ
func solution(_ s:String, _ n:Int) -> String {
return s.utf8.map {
var code = Int($0)
switch code {
case 65...90:
code = (code + n - 65) % 26 + 65
case 97...122:
code = (code + n - 97) % 26 + 97
default:
break
}
return String(UnicodeScalar(code)!)
}.joined()
}
์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ utf8 ํ๋กํผํฐ๋ก ์ ๊ทผํ๋ค.
๋ฌธ์์ด์ ์ฝ๋๊ฐ์ด 65๋ถํฐ 90 ์ฌ์ด(๋๋ฌธ์ ์ํ๋ฒณ) ์ด๊ฑฐ๋ 97๋ถํฐ 122 ์ฌ์ด(์๋ฌธ์ ์ํ๋ฒณ) ๋ผ๋ฉด n ๋งํผ ์ฆ๊ฐ์ํจ๋ค.
์ดํ ์ฝ๋๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํด ๋ฐํํ๋ค.
๋ค๋ฅธ ํ์ด
func solution(_ s:String, _ n:Int) -> String {
let alphabets = "abcdefghijklmnopqrstuvwxyz".map { $0 }
return String(s.map {
guard let index = alphabets.firstIndex(of: Character($0.lowercased())) else { return $0 }
let letter = alphabets[(index + n) % alphabets.count]
return $0.isUppercase ? Character(letter.uppercased()) : letter
})
}
์๋ฌธ์ ์ํ๋ฒณ์ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค.
๋ฌธ์์ด์ ๊ฐ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ ํ, ์ธ๋ฑ์ค+n์ ๊ฐ์ ๊ตฌํด letter๋ณ์์ ์ ์ฅํ๋ค.
๋ฌธ์์ด์ ๋ฌธ์๊ฐ ๋๋ฌธ์๋ผ๋ฉด, letter ๋ณ์๋ฅผ ๋๋ฌธ์๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค.
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ (0) | 2023.02.09 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ์ฝ์์ ํฉ (0) | 2023.02.09 |
[ํ๋ก๊ทธ๋๋จธ์ค LV.1] ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ (0) | 2023.02.08 |
[Swift] ์ ๊ทผ ์ ์ด (Access Control) (0) | 2023.02.07 |
[Swift] ARC (0) | 2023.02.07 |