๋ฌธ์ ์ค๋ช
์ด๋ค ๋ฌธ์ฅ์ ๊ฐ ์ํ๋ฒณ์ ์ผ์ ํ ๊ฑฐ๋ฆฌ๋งํผ ๋ฐ์ด์ ๋ค๋ฅธ ์ํ๋ฒณ์ผ๋ก ๋ฐ๊พธ๋ ์ํธํ ๋ฐฉ์์ ์์ ์ํธ๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด AB๋ 1๋งํผ ๋ฐ๋ฉด BC๊ฐ ๋๊ณ , 3๋งํผ ๋ฐ๋ฉด DE๊ฐ ๋ฉ๋๋ค. z๋ 1๋งํผ ๋ฐ๋ฉด a๊ฐ ๋ฉ๋๋ค. ๋ฌธ์์ด s์ ๊ฑฐ๋ฆฌ n์ ์ ๋ ฅ๋ฐ์ s๋ฅผ n๋งํผ ๋ฏผ ์ํธ๋ฌธ์ ๋ง๋๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์.
์ ํ ์กฐ๊ฑด
- ๊ณต๋ฐฑ์ ์๋ฌด๋ฆฌ ๋ฐ์ด๋ ๊ณต๋ฐฑ์ ๋๋ค.
- s๋ ์ํ๋ฒณ ์๋ฌธ์, ๋๋ฌธ์, ๊ณต๋ฐฑ์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- s์ ๊ธธ์ด๋ 8000์ดํ์ ๋๋ค.
- n์ 1 ์ด์, 25์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
s | n | result |
z | 1 | a |
a B z | 4 | e F d |
AB | 1 | BC |
ํ์ด:์ฒ์์ ์๊ฐํ์ ๋ ์์ฃผ ๊ฐ๋จํ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค.
1.๊ณต๋ฐฑ์ธ์ง ์๋์ง ๊ตฌ๋ณํ๋ค.
2.๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ค.
3.ํด๋น ์ํ๋ฒณ์ด ๋ช ๋ฒ์งธ์ธ์ง ๊ตฌํ๋ค.
4.ํด๋น ์ํ๋ฒณ ์์์ n๋งํผ ๋ํด์ค ์์์ ์๋ ์ํ๋ฒณ์ ๊ตฌํ๋ค.
5.์ํ๋ฒณ์ด 26๊ฐ๋๊น 26์ด ๋์ด๊ฐ๋ฉด -26์ ํด์ค ์ํ๋ฒณ์ ๊ตฌํ๋ค.
์ด๋ฐ ์์ผ๋ก ๊ทธ๋ฅ ๋ชจ๋ for๋ฌธ์ ์ฐ๋ ํ ์คํธ์ผ์ด์ค ๋ง์ง๋ง์์ ์๊ฐ์ด๊ณผ๋ผ๊ณ ๋ด๋ค. ๋ด๊ฐ ์๊ฐํด๋ s์ ๊ธธ์ด๊ฐ 1000์๋ง ๋์ด๊ฐ๋ ์์ฃผ ๋นํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ ์๊ฐํ ๊ฒ ๋ด๊ฐ ์ข์ํ๋ ๋์ ๋๋ฆฌ์๋ค. ์ํ๋ฒณ์ key๊ฐ์ผ๋ก ์ํ๋ฒณ์ ์์๋ฅผ value๊ฐ์ผ๋ก ๋ฃ์ด์คฌ๋ค. ๋ํ key๊ฐ๋ง ๋ชจ์์ ์ ๋ ฌํด๋์ ๋ฐฐ์ด์ผ๋ก keys๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค.
์ฐ์ number๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค์ด์ ํด๋น ์ํ๋ฒณ์ ์์์ ํด๋นํ๋ ๊ฐ์ ์์๋ธ ๋ค n๋งํผ ๋ํด์ฃผ๊ณ
key๋ค๋ง ๋ชจ์๋์ keys์ ํด๋น ์ซ์๋ฅผ ๋ฃ์ด์ n๋งํผ ๋ํ ์ํ๋ฒณ์ ์์๋ธ๋ค -> value
๋ค์ ์ํ๋ฒณ๋์ ๋๋ฆฌ์ value๋ฅผ ๋ฃ์ด์ค์ ํด๋น ์ํ๋ฒณ์ด ๋ช ๋ฒ์งธ์ธ์ง ์์๋ธ๋ค -> value1
๊ทธ๋ฆฌ๊ณ ์ํ๋ฒณ๋์ ๋๋ฆฌ์ ํค ์ค value์ ์์๊ฐ ์๋ ์ํ๋ฒณ์ ์ฐจ๋ก๋๋ก ๋๋ฌธ์๋ผ๋ฉด ๊ทธ๋ฅ ๋ํด์ฃผ๊ณ
์๋๋ฉด ์๋ฌธ์๋ก ๋ณํํด์ ๋ฃ์ด์ค๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
func solution(_ s:String, _ n:Int) -> String {
var answer = String()
let alphabet = ["A":0,"B":1,"C":2,"D":3,"E":4,"F":5,"G":6,"H":7,"I":8,"J":9,"K":10,"L":11,"M":12,"N":13,"O":14,"P":15,"Q":16,"R":17,"S":18,"T":19,"U":20,"V":21,"W":22,"X":23,"Y":24,"Z":25]
for i in 0..<Array(s).count{
if Array(s)[i] == " "{
answer += " "
continue
}
var number = alphabet[String(Array(s)[i].uppercased())]! + n
if number > 25 {
number = number - 26
}
let value = keys[number]
if Array(s)[i].isUppercase{
}else {
}
}
return answer
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
๋ค๋ฅธ ์ฌ๋์ ํ์ด ์ค ๊ฐ์ฅ ์ข๋ค๊ณ ์๊ฐํ๋ ๊ฒ
ํ์ด: ์ฐ์ s๋ฅผ unicodeScalars์ map์ ์ด์ฉํด์ s์ ๋ฌธ์๋ค์ unicedeScalars์ ๊ฐ์ Int๋ก ํ๋ณํํ ๊ฐ ์ค 65~90์ ๋๋ฌธ์ 97~122๋ ์๋ฌธ์ 32๋ ๊ณต๋ฐฑ์ธ๋ฐ ๋๋ฌธ์,์๋ฌธ์์ธ ๊ฒฝ์ฐ ์ํ๋ฒณ์ ํฌ๊ธฐ๋ก ๋๋๋ค์ ๋ค์ ์ต์๊ฐ์ ๋ํด์ค ํฌ๊ธฐ๋ฅผ ๋์ง ์๊ฒ ํด์ฃผ๊ณ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ๋ ๊ทธ๋ฅ ์ถ๋ ฅํ๊ฒ๋ ํด์ opted๋ผ๋ ๋ฐฐ์ด์ ๋ด๋๋ค. ๊ทธ ๋ฐฐ์ด์ ์๋ ์์คํค์ฝ๋ ์ซ์๋ค์ ๋ค์ Unicode.Scalar.init($0)๋ก ํด๋น ๋ฌธ์๋ก ๋ฐ๊ฟ์ค ๋ค์
flatMap์ผ๋ก nil์ด ์๋ ๊ฒ๋ค์ ๋ชจ์์ (flatMap -> compactMap์ผ๋ก ๋ฐ๋์๋ค.) ๋ค์ ๋ฌธ์๋ก ๋ณํํด์ค๋ค์ ํฉ์ณ์ค๋ค.
์ฌ์ค ์ดํด๊ฐ ๋ฐฑํ๋ก ๋์ง ์์.... ํ์ง๋ง
flatMap๊ณผ unicodeScalars๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๊ฐํ..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
func solution(_ s:String, _ n:Int) -> String {
let opted = s.unicodeScalars
.map { unicodeScala -> Int in
switch number {
case 65...90: return (number - 65 + n) % 26 + 65
case 97...122: return (number - 97 + n) % 26 + 97
case 32: return number
default:
print("NG")
return number
}
}
.map { Unicode.Scalar.init($0) }
.flatMap { $0 }
.map { Character.init($0) }
return String(opted)
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ Swift (0) | 2020.02.23 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ์์ ํฉ Swift (0) | 2020.02.23 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ Swift (0) | 2020.02.17 |
ํ๋ก๊ทธ๋๋จธ์ค ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? Swift (0) | 2020.02.17 |
ํ๋ก๊ทธ๋๋จธ์ค ์์ ์ฐพ๊ธฐ Swift (2) | 2020.02.16 |
๋๊ธ