์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - 2018 KAKAO BLIND RECRUITMENT
<[1์ฐจ] ๋คํธ ๊ฒ์>
๋ฌธ์ ์ค๋ช
์นด์นด์คํก์ ๋ฌ ๋ค ๋ฒ์งธ ๋ณ! ์ฌ์ฌํ ๋? ์นด์นด์คํก ๊ฒ์๋ณ~
์นด์นด์คํก ๊ฒ์๋ณ์ ํ๋ฐ๊ธฐ ์ ๊ท ์๋น์ค๋ก ๋คํธ ๊ฒ์์ ์ถ์ํ๊ธฐ๋ก ํ๋ค. ๋คํธ ๊ฒ์์ ๋คํธํ์ ๋คํธ๋ฅผ ์ธ ์ฐจ๋ก ๋์ ธ ๊ทธ ์ ์์ ํฉ๊ณ๋ก ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ ๊ฒ์์ผ๋ก, ๋ชจ๋๊ฐ ๊ฐ๋จํ ์ฆ๊ธธ ์ ์๋ค.
๊ฐ ์ ์ฌํ ๋ฌด์ง๋ ์ฝ๋ฉ ์ค๋ ฅ์ ์ธ์ ๋ฐ์ ๊ฒ์์ ํต์ฌ ๋ถ๋ถ์ธ ์ ์ ๊ณ์ฐ ๋ก์ง์ ๋งก๊ฒ ๋์๋ค. ๋คํธ ๊ฒ์์ ์ ์ ๊ณ์ฐ ๋ก์ง์ ์๋์ ๊ฐ๋ค.
๋คํธ ๊ฒ์์ ์ด 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
๋ฌธ์ ํ์ด
- my solution
def solution(dartResult):
temp=[]
for i in range(len(dartResult)):
x=dartResult[i]
if(x.isdigit()): #์ซ์ ํ๋ณ
if(x=="1" and dartResult[i+1]=="0"): #10์ธ ๊ฒฝ์ฐ
temp.append(10)
elif(x=="0" and i!=0):
if(dartResult[i-1]=="1"):
pass
else: #0์ธ ๊ฒฝ์ฐ
temp.append(0)
else:
temp.append(int(x))
if(x=="S"): #Single
pass
if(x=="D"): #Double
temp[-1]*=temp[-1]
if(x=="T"): #Triple
temp[-1]*=temp[-1]*temp[-1]
if(x=="*"): #์คํ์
if(len(temp)>1):
temp[-2]*=2
temp[-1]*=2
else: #์คํ์ - ์ฒซ๋ฒ์งธ ๊ธฐํ
temp[-1]*=2
if(x=="#"): #์์ฐจ์
temp[-1]*=-1
return sum(temp)
๋จ์ ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ ํ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค!
1) ๋ฐ๋ณต๋ฌธ์ ํตํ์ฌ dartResult ๋ฆฌ์คํธ ์ํ
1-1) ๊ฐ์ด ์ซ์์ธ ๊ฒฝ์ฐ
1-1-1) 1 ๋ค์ 0์ธ ๊ฒฝ์ฐ: ๋ฆฌ์คํธ์ 10 ์ถ๊ฐ
1-1-2) ๋งจ ์ ๊ฐ์ด ์๋๊ณ 0์ธ ๊ฒฝ์ฐ
1-1-2-1) ์์ด 1์ด๋ฉด: 1-1-1)์์ 10์ ์ถ๊ฐํ์ผ๋ฏ๋ก pass
1-1-2-2) ์์ด ์ด ์๋๋ฉด: ๋จ์ ์ ์๊ฐ 0์ด๋ฏ๋ก ๋ฆฌ์คํธ์ 0 ์ถ๊ฐ
1-1-3) ๊ทธ ์ธ ๊ฒฝ์ฐ: ๋ฆฌ์คํธ์ ์ ์ ๊ฐ ์ถ๊ฐ
1-2) S์ธ ๊ฒฝ์ฐ: Single - 1 ์ ๊ณฑ์ ์๋ ๊ฐ ๊ทธ๋๋ก์ด๋ฏ๋ก pass
1-3) D์ธ ๊ฒฝ์ฐ: Double - 2 ์ ๊ณฑ
1-4) T์ธ ๊ฒฝ์ฐ: Triple - 3 ์ ๊ณฑ
1-5) *์ธ ๊ฒฝ์ฐ: ์คํ์
1-5-1) ์ฒซ ๋ฒ์งธ ๊ธฐํ์์ ๋์จ ๊ฒ์ด ์๋ ๊ฒฝ์ฐ: ํด๋น ์ ์์ ๋ฐ๋ก ์ ์ ์ป์ ์ ์ ๊ฐ 2๋ฐฐ
1-5-2) ์ฒซ ๋ฒ์งธ ๊ธฐํ์์ ๋์จ ๊ฒฝ์ฐ: ์ฒซ ๋ฒ์งธ ์ ์๋ง 2๋ฐฐ
1-6) #์ธ ๊ฒฝ์ฐ: ์์ฐจ์ - ํด๋น ์ ์ ๋ง์ด๋์ค
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ ์คํ์๊ณผ ์์ฐจ์ ํจ๊ณผ์ ์ค์ฒฉ๋๋ค๋ ์กฐ๊ฑด์ ๊ฒฝ์ฐ๋ ๋ฐ๋ก ๊ตฌํํ ํ์๊ฐ ์๋ค.
๋ํ ์คํ์๊ณผ ์์ฐจ์์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ฐ๋ก ๊ตฌํํ ํ์๊ฐ ์๋ค.
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ ์ ์๊ฐ 10์ ์ผ ๋ ๋ฐ๋ก ๊ณ ๋ คํ์ฌ ์ฝ๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค๋ ์ ์ด ๋์น๊ธฐ ์ฌ์ด ๋ถ๋ถ์ด์๋ค๊ณ ์๊ฐํ๋ค.
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges