์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค!!
2018 KAKAO BLIND RECRUITMENT ๋ฌธ์ ๋ก ์ถ์ ๋์๋ ๋คํธ๊ฒ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ดค๋๋ฐ์, ํ๋ก๊ทธ๋๋จธ์ค ๊ธฐ์ค Level1 ๋ฌธ์ ์ด์ง๋ง
์ ๋ ์ ๊ทผํ๋๋ฐ ๊ฝค๋ ์ค๋๊ฑธ๋ ธ๊ธฐ ๋๋ฌธ์.. ์ด๋ป๊ฒ ํ์๋์ง ๋ณต๊ธฐํ๋ฉฐ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!!
๋ฌธ์ ๋งํฌ
๋ฌธ์ ์ค๋ช
์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค.
๊ฐ ์
์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์ ํต์ฌ ๋ถ๋ถ์ธ ์ ์ ๊ณ์ฐ ๋ก์ง์ ๋งก๊ฒ ๋์๋ค. ๋คํธ ๊ฒ์์ ์ ์ ๊ณ์ฐ ๋ก์ง์ ์๋์ ๊ฐ๋ค.
- ๋คํธ ๊ฒ์์ ์ด 3๋ฒ์ ๊ธฐํ๋ก ๊ตฌ์ฑ๋๋ค.
- ๊ฐ ๊ธฐํ๋ง๋ค ์ป์ ์ ์๋ ์ ์๋ 0์ ์์ 10์ ๊น์ง์ด๋ค.
- ์ ์์ ํจ๊ป Single(S), Double(D), Triple(T) ์์ญ์ด ์กด์ฌํ๊ณ ๊ฐ ์์ญ ๋น์ฒจ ์ ์ ์์์ 1์ ๊ณฑ, 2์ ๊ณฑ, 3์ ๊ณฑ (์ ์1 , ์ ์2 , ์ ์3 )์ผ๋ก ๊ณ์ฐ๋๋ค.
- ์ต์ ์ผ๋ก ์คํ์(*) , ์์ฐจ์(#)์ด ์กด์ฌํ๋ฉฐ ์คํ์(*) ๋น์ฒจ ์ ํด๋น ์ ์์ ๋ฐ๋ก ์ ์ ์ป์ ์ ์๋ฅผ ๊ฐ 2๋ฐฐ๋ก ๋ง๋ ๋ค. ์์ฐจ์(#) ๋น์ฒจ ์ ํด๋น ์ ์๋ ๋ง์ด๋์ค๋๋ค.
- ์คํ์(*)์ ์ฒซ ๋ฒ์งธ ๊ธฐํ์์๋ ๋์ฌ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์คํ์(*)์ ์ ์๋ง 2๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
- ์คํ์(*)์ ํจ๊ณผ๋ ๋ค๋ฅธ ์คํ์(*)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์คํ์(*) ์ ์๋ 4๋ฐฐ๊ฐ ๋๋ค. (์์ 4๋ฒ ์ฐธ๊ณ )
- ์คํ์(*)์ ํจ๊ณผ๋ ์์ฐจ์(#)์ ํจ๊ณผ์ ์ค์ฒฉ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค์ฒฉ๋ ์์ฐจ์(#)์ ์ ์๋ -2๋ฐฐ๊ฐ ๋๋ค. (์์ 5๋ฒ ์ฐธ๊ณ )
- Single(S), Double(D), Triple(T)์ ์ ์๋ง๋ค ํ๋์ฉ ์กด์ฌํ๋ค.
- ์คํ์(*), ์์ฐจ์(#)์ ์ ์๋ง๋ค ๋ ์ค ํ๋๋ง ์กด์ฌํ ์ ์์ผ๋ฉฐ, ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
0~10์ ์ ์์ ๋ฌธ์ S, D, T, *, #๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์ ๋ ฅ๋ ์ ์ด์ ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ๋ ฅ ํ์
"์ ์|๋ณด๋์ค|[์ต์
]"์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด 3์ธํธ.
์) 1S2D*3T
- ์ ์๋ 0์์ 10 ์ฌ์ด์ ์ ์์ด๋ค.
- ๋ณด๋์ค๋ S, D, T ์ค ํ๋์ด๋ค.
- ์ต์ ์ *์ด๋ # ์ค ํ๋์ด๋ฉฐ, ์์ ์๋ ์๋ค.
์ถ๋ ฅ ํ์
3๋ฒ์ ๊ธฐํ์์ ์ป์ ์ ์ ํฉ๊ณ์ ํด๋นํ๋ ์ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์) 37
์ ์ถ๋ ฅ ์์
๋ฌธ์ ํ์ด
๋ฌธ์ ์ค๋ช ์ ๊ฝค๋ ๊ธธ์ง๋ง, ์ ์ถ๋ ฅ ์์ ๋ ๋ค์ํ๊ฒ ์ ์๋์ด์์ด ์ดํดํ๋๋ฐ ํฌ๊ฒ ์ด๋ ต์ง๋ ์์์ต๋๋ค.
์ด ๋ฌธ์ ์์ ์ค์ํ ํฌ์ธํธ๋ ์ ๋ ฅ ํ์์ ๋์์์ต๋๋ค!
๊ฒ์์ ์ด 3์ธํธ๋ก ์ด๋ฃจ์ด์ง๋๋ฐ, ๊ฐ ์ธํธ ๋น ํ๋ํ ์ ์๋ ์ ์๋ 0~10์ด๋ฉฐ ๋ณด๋์ค๋ S, D, T ์ค ํ๋์ ๋๋ค.
์ต์ ์ ์คํ์(*), ์์ฐจ์(#) ๋๊ฐ์ง ์ค ํ๋๊ฐ ๋ถ์ผ๋ฉฐ ์ต์ ์ ๋ถ์ง ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ ์ ์ ๊ทผ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ๋จผ์ , ์ธํธ ๋จ์๋ก ๋๋์ด์ฃผ์.
์ธํธ ๋จ์๋ก ๋๋๋ ์์ ์ด ๊ฐ์ฅ ๋จผ์ ํ์ํ๋ค๊ณ ์๊ฐํ๋ ์ด์ ๋, ํ๋ํ ์ ์๋ ์ ์๊ฐ 10๊น์ง์ด๊ธฐ ๋๋ฌธ์ ํญ์ ํ์๋ฆฌ ์๊ฐ ์๋๋ผ
๋ฌธ์์ด์ ์ํํ๋ ๋ฐฉ์์ผ๋ก ๊ณ์ฐํ ์ ์๋ค๊ณ ํ๋จํ๊ณ , ์ต์ ๋ํ ์์์๋ ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ split()์ ์ด์ฉํด ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ ์ธํธ ๋จ์๋ก ์ชผ๊ฐ์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค!
2. ๋ณด๋์ค, ์ต์ ์ด ๋ถ๋ ์ํฉ์ ๋งก๊ฒ ์ธํธ๋ณ๋ก ์ ์๋ฅผ ๊ณ์ฐํ ์ ์๋ ์กฐ๊ฑด์์ ๋ง๋ค์.
๋์ ์ ์๊ฐ ์๋๋ผ ์ธํธ๋ณ ์ ์๋ฅผ ๋ฐ๋ก ๊ณ์ฐํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ ์ด์ ๋ ๋ฐ๋ก ์ต์ ๋๋ฌธ์ ๋๋ค..!
์คํ์(*)์ต์ ์ ๊ฒฝ์ฐ ํด๋น ์ ์์ ๋ฐ๋ก ์ด์ ์ธํธ์ ์ ์ ๋ํ 2๋ฐฐ๋ฅผ ํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํด๋น ์ธํธ์ ์ ์ ๊ณ์ฐ์ด ๋๋๋๋ผ๋
์ดํ ์ต์ ์ ๋ฐ๋ผ ์ ์๊ฐ ๋ฐ๋ ์ ์์ด์ ๋ฐ๋ก ๊ณ์ฐํด์ฃผ์ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
3. ์ธํธ๋ณ๋ก ๊ณ์ฐํ ์ ์๋ฅผ ๋ชจ๋ ๋ํด์ฃผ์.
์ธํธ๋ณ๋ก ๊ณ์ฐํ ์ ์๋ฅผ ๋ชจ๋ ํฉ์ฐํด์ return ํด์ฃผ๋ฉด ๋!!์ ๋๋ค.
Swift ํ์ด ์ฝ๋
func solution(_ dartResult:String) -> Int {
let score = dartResult.split(whereSeparator: { $0.isLetter || $0 == "*" || $0 == "#" })
.map { Int($0)! }
let letters = dartResult.split(whereSeparator: { $0.isNumber })
var result: [Int] = [0, 0, 0]
// ๋คํธ๊ฒฐ๊ณผ ์ํ
for i in 0..<letters.count {
if letters[i].contains("S") {
result[i] = score[i]
} else if letters[i].contains("D") {
result[i] = score[i] * score[i]
} else if letters[i].contains("T") {
result[i] = score[i] * score[i] * score[i]
}
if letters[i].contains("#") {
result[i] = result[i] * -1
} else if letters[i].contains("*") {
if i != 0 {
result[i-1] *= 2
result[i] *= 2
} else {
// ์ธ๋ฑ์ค 0์ผ ๋
result[i] *= 2
}
}
}
return result.reduce(0, +)
}
์ ๋ ์์ ๊ฐ์ด ํ์๋๋ฐ์!
์ผ๋จ ์ ์ฝ๋๋ฅผ ๊ฐ๋จํ ์ค๋ช ํด๋ณด์๋ฉด, ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ split()์ ์ด์ฉํด ์ชผ๊ฐ์ score ๋ฐฐ์ด์๋ ์ธํธ๋ณ ์ ์(Int๋ก ๋ณํ)๋ฅผ,
letters ๋ฐฐ์ด์๋ ์ธํธ๋น ํ๋ํ ๋ณด๋์ค์ ์ต์ (์ฃผ์ด์ง๋ค๋ฉด) ๋ฌธ์๋ฅผ ์ ์ฅํด์ฃผ์์ต๋๋ค.
์ฌ์ค ์ ๋ ์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ๊น์ง ๋ฌธ์์ด์ ์ชผ๊ฐ๋ ๋ฉ์๋๋ก split(separator: )๋ง ์ฌ์ฉํ์๋๋ฐ์,
separator ํ๋ผ๋ฏธํฐ๋ ํ์ ์ด Self.Element ์ ๋๋ค.
์ฆ, ์ปฌ๋ ์ ์ ์์๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ํด๋น ์ธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์ชผ๊ฐ์ฃผ๋ ์ญํ ์ ํ๋ ๋ฉ์๋์ ๋๋ค.
Split()
๊ทธ๋ฐ๋ฐ, ์ ๋ ์ด๋ค ์กฐ๊ฑด์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์ชผ๊ฐ์ฃผ๊ณ ์ถ์ ์ํฉ(์ํ๋ฒณ์ด๋ * ํน์ # ๋ฌธ์๊ฐ ๋์ค๋ฉด ์ชผ๊ฐ๊ณ ์ถ์ ์ํฉ)์ด์ด์ ์ด๋ป๊ฒ ์ฌ์ฉํด์ฃผ๋ฉด ์ข์์ง ์ฐพ์๋ณด๋ whereSeparator๋ผ๋ ํด๋ก์ ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ๋ split(whereSeparator: ) ๋ฉ์๋๊ฐ ์๋๋ผ๊ตฌ์!
๊ทธ๋์ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ํ๋ ์กฐ๊ฑด์ ๋ง๊ฒ ๋ฌธ์์ด์ ์ชผ๊ฐค ์ ์์์ต๋๋ค. ๋ฌธ์์ด ์ฒ๋ฆฌ ๊ด๋ จ ๋ค๋ฅธ ๋ฌธ์ ๋ค์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์์ ์ ์ ๋ฆฌํด๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!!
๊ณต์๋ฌธ์์ ์ ์๋ฅผ ์ง์ญํด๋ณด์๋ฉด,(๋กํ ํํ๊ณ )
์ง์ ๋ ์ ์ด๋ฅผ ๋ง์กฑํ๋ ์์๋ฅผ ํฌํจํ์ง ์๋ ์ปฌ๋ ์ ์ ๊ฐ์ฅ ๊ธด ์ฐ์์ ์์๋๋ก ๋ฐํํฉ๋๋ค. ์ ๋๋ก ํด์ํ ์ ์์ ๊ฒ ๊ฐ์๋ฐ์!
์กฐ๊ฑด์ ๊ฑธ๋ฆฌ๊ธฐ ์ ๊น์ง์ ๋ฌธ์์ด์ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ ๋ฐํํ๋ ํจ์๋ผ๊ณ ์ดํดํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๋ผ๋ฏธํฐ์ ๋ํ ์ค๋ช ์ ๋ณด๋ฉด,
์์๋ฅผ ์ธ์๋ก ์ฌ์ฉํ๊ณ ํด๋น ์์์์ ์ปฌ๋ ์ ์ ๋ถํ ํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ Bool ๊ฐ์ ๋ฐํํ๋ ํด๋ก์ ์ ๋๋ค.
๋ผ๋ ์ค๋ช ์ ํ์ธํ ์ ์์ต๋๋ค.
ํด๋น ํ๋ผ๋ฏธํฐ๋ก ์ ์ ํ ์กฐ๊ฑด์์ ๊ฐ์ง๋ ํด๋ก์ ๋ฅผ ๋๊ฒจ ์ํ๋ ์กฐ๊ฑด์ ๋ง๊ฒ ๋ฌธ์์ด์ ์ ์ฉํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ ๊ฒ ๊ฐ๋ค์!!
๋ค์ ์ฝ๋ ์ค๋ช ์ผ๋ก ๋์์์,
์ฃผ์ด์ง ์ ๋ ฅ์ ์ ์(score), ๋ณด๋์ค ๋ฐ ์ต์ (letters) ๋ฐฐ์ด ๋๊ฐ์ง๋ก ๋๋๊ณ ,
๊ฐ ์ธํธ๋ณ ์ ์๋ฅผ ์ ์ฅํ result ๋ฐฐ์ด๋ ์ ์ธ๊ณผ ๋์์ [0, 0, 0]์ด๊ธฐํ(3์ธํธ ๊ณ ์ ์ด๊ธฐ ๋๋ฌธ) ํด์ฃผ์์ต๋๋ค!
๋คํธ๊ฒ์์ 3์ธํธ๋ก ์ด๋ฃจ์ด์ง ๊ฒ์์ด๋ผ๊ณ ํ์ผ๋ ์ด๋ค ์ ๋ ฅ์ด ๋ค์ด์๋ score, letters, result ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๋ชจ๋ 3์ ๋๋ค!
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํด ์ธํธ๋ณ ์ ์๋ฅผ ๊ตฌํ๊ธฐ๊ฐ ์ฝ๊ธฐ ๋๋ฌธ์
์ ๋ for๋ฌธ ์์์ ์ ์๋ฅผ ๊ตฌํ๋ ์กฐ๊ฑด์์ ๋ง๋ค๋, ๊ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์์์ ์ ๊ทผํด์ ๊ฐ ์ธํธ๋ณ ์ ์๋ฅผ ๊ตฌํ ์ ์๋๋ก ํด์ฃผ์์ต๋๋ค.
์ฌ์ค ์๋ก ์๊ฒ๋ split() ํจ์๋ฅผ ๊ฐ๋จํ๊ฒ๋๋ง ์ ๋ฆฌํด๋๊ณ ์ถ์ด์ ๋คํธ๊ฒ์ ๋ฌธ์ ํ์ด๊ณผ์ ์ ์ ๋ฆฌํด๋ณด์๋๋ฐ์,
Level1์ด์ง๋ง(์..?) ์ฝ์ง ์์ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค..๐ฅฒ
๋ฌธ์ ํ์ด์ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์ จ๊ธธ ๋ฐ๋ผ๋ฉฐ,, ๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค๐๐
[์ฐธ๊ณ ์๋ฃ]