Problem
์ฝ๋ฉํ ์คํธ ์ฐ์ต - [3์ฐจ] n์ง์ ๊ฒ์
N์ง์ ๊ฒ์ ํ๋ธ๊ฐ ํ๋ํ๋ ์ฝ๋ฉ ๋์๋ฆฌ์์๋ ์ ํต์ ์ผ๋ก ํด์ค๋ ๊ฒ์์ด ์๋ค. ์ด ๊ฒ์์ ์ฌ๋ฌ ์ฌ๋์ด ๋ฅ๊ธ๊ฒ ์์์ ์ซ์๋ฅผ ํ๋์ฉ ์ฐจ๋ก๋๋ก ๋งํ๋ ๊ฒ์์ธ๋ฐ, ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค. ์ซ์๋ฅผ 0
programmers.co.kr
Solution
์ฐ์ ์ซ์๋ฅผ n์ง์๋ก ๋ฐ๊พผ String์ ๋ด์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋๋ค. -> var array = [String]()
๊ทธ ๋ค์ ๋ฏธ๋ฆฌ ์ถ๋ ฅํ ์ซ์๋ค์ ๋ด์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋๋ค. - > var answer = [String]()
์ฐจ๋ก๋๋ก ์ซ์๋ฅผ ๊ธฐ์ตํ ๋ณ์๋ฅผ ๋ง๋ค์ด์ค๋๋ค. - > var i = 0
๋ช๋ฒ์งธ ์ฐจ๋ก์ธ์ง ๊ธฐ๋กํ ๋ณ์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.(index๊ฐ 0๋ถํฐ ์์์ด๋ฏ๋ก ์ด๊ธฐ๊ฐ์ ์์ ์ ์์์์ -1 ํด์ค๋๋ค.) -> var j = p-1
๋ฏธ๋ฆฌ ์ซ์๋ฅผ ์ถ๋ ฅํ ์ซ์๊ฐ t๋งํผ ํ์ํ๊ธฐ ๋๋ฌธ์ answer์ ๊ธธ์ด๊ฐ t๋ณด๋ค ์์ ๊ฒ์ ์กฐ๊ฑด์ผ๋ก while๋ฌธ์ ์คํํด์ค๋๋ค.
-> while answer.count < t {
array์์ ๊ธธ์ด๊ฐ ์์๋ณด๋ค ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด์ j+1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์๊ฒ์ผ๋ก ๋ก๋๋ค.
-> if array.count >= j+1 {
์กฐ๊ฑด์ ๋ง๋ค๋ฉด ๋ฏธ๋ฆฌ ์ถ๋ ฅํ ์ซ์ ์ฆ, array์์ ํ์ฌ ํด์ ์์ ์ ์์์ฐจ๋ก์ ์ซ์๋ฅผ ์ถ๊ฐํด์ค๋ค.
answer.append(array[j])
ํ ํด์ด ์ฌ๋ ์๋งํผ ๋์ด๋๋ฏ๋ก j์ m์ ๋ํด์ค๋๋ค. -> j += m
์๋๋ผ๋ฉด ๋ฐฐ์ด์์ ์ซ์๋ฅผ n์ง์๋ก ๋ฐ๊พผ String์ map์ผ๋ก ์๋ฆฟ์๋งํผ ๋๋๊ฒ์ contentsOf:๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ์๋ฆฟ์์ ์ซ์๋ฅผ ๋ฃ์ด์ค๋๋ค.
-> else{array.append(contentsOf:String(i, radix: n).map{String($0.uppercased())})
๊ทธ๋ฆฌ๊ณ ๋ค์ ์ซ์๋ก ๋์ด๊ฐ๊ฒ +1์ ํด์ค๋๋ค. -> i += 1
๋ง์ง๋ง์ผ๋ก answer์ ๊ธธ์ด๊ฐ t๋ณด๋ค ๊ฐ๊ฑฐ๋ ๊ธธ์ด์ก๋ค๋ฉด while๋ฌธ์ ํ์ถํ๊ณ answer๋ฅผ joined()๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ถ์ฌ์ค ๋ค ๋ฐํํด์ค๋๋ค.
-> return answer.joined()
Source Code
func solution(_ n:Int, _ t:Int, _ m:Int, _ p:Int) -> String { | |
//์ซ์๋ฅผ n์ง์๋ก ๋ฐ๊พผ String์ ๋ด์ ๋ฐฐ์ด | |
var array = [String]() | |
//๋ฏธ๋ฆฌ ์ถ๋ ฅํ ์ซ์๋ค์ ๋ด์ ๋ฐฐ์ด | |
var answer = [String]() | |
//์ฐจ๋ก๋๋ก ์ซ์๋ฅผ ๊ธฐ๋กํ ๋ณ์ | |
var i = 0 | |
//๋ช๋ฒ์งธ ์ฐจ๋ก์ธ์ง ๊ธฐ๋กํ ๋ณ์(index๊ฐ 0๋ถํฐ ์์์ด๋ฏ๋ก ์ด๊ธฐ๊ฐ์ ์์ ์ ์์์์ -1 ํด์ค๋๋ค.) | |
var j = p-1 | |
//๋ฏธ๋ฆฌ ์ซ์๋ฅผ ์ถ๋ ฅํ ์ซ์๊ฐ t๋งํผ ํ์ํ๊ธฐ ๋๋ฌธ์ answer์ ๊ธธ์ด๊ฐ t๋ณด๋ค ์์ ๊ฒ์ ์กฐ๊ฑด์ผ๋ก while๋ฌธ์ ์คํํ๋ค. | |
while answer.count < t { | |
//array์์ ๊ธธ์ด๊ฐ ์์๋ณด๋ค ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด์ j+1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์๊ฒ์ผ๋ก ๋๋ค. | |
if array.count >= j+1 { | |
//์กฐ๊ฑด์ ๋ง๋ค๋ฉด ๋ฏธ๋ฆฌ ์ถ๋ ฅํ ์ซ์ ์ฆ, array์์ ํ์ฌ ํด์ ์์ ์ ์์์ฐจ๋ก์ ์ซ์๋ฅผ ์ถ๊ฐํด์ค๋ค. | |
answer.append(array[j]) | |
//ํ ํด์ด ์ฌ๋ ์๋งํผ ๋์ด๋๋ฏ๋ก j์ m์ ๋ํด์ค๋ค. | |
j += m | |
}else{ | |
//๋ฐฐ์ด์์ ์ซ์๋ฅผ n์ง์๋ก ๋ฐ๊พผ String์ map์ผ๋ก ์๋ฆฟ์๋งํผ ๋๋๊ฒ์ contentsOf:๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ์๋ฆฟ์์ ์ซ์๋ฅผ ๋ฃ์ด์ค๋ค. | |
array.append(contentsOf:String(i, radix: n).map{String($0.uppercased())}) | |
//๋ค์ ์ซ์๋ก ๋์ด๊ฐ๊ฒ +1์ ํด์ค๋ค. | |
i += 1 | |
} | |
} | |
//answer์ ๊ธธ์ด๊ฐ t๋ณด๋ค ๊ฐ๊ฑฐ๋ ๊ธธ์ด์ก๋ค๋ฉด while๋ฌธ์ ํ์ถํ๊ณ answer๋ฅผ joined()๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ถ์ฌ์ค ๋ค ๋ฐํํด์ค๋๋ค. | |
return answer.joined() | |
} | |
solution(16, 16, 2, 2) |
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ Swift (0) | 2020.11.12 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง 1 ์ฟผ๋์์ถ ํ ๊ฐ์ ์ธ๊ธฐ Swift (0) | 2020.11.05 |
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ์ฐพ๊ธฐ Swift (0) | 2020.10.23 |
2018 KAKAO BLIND RECRUITMENT [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง Swift (0) | 2020.10.20 |
ํ๋ก๊ทธ๋๋จธ์ค ์์ ๋ง๋ค๊ธฐ Swift (0) | 2020.10.19 |
๋๊ธ