์ฝ๋ฉ ํ ์คํธ ์ฐ์ต - 2019 KAKAO BLIND RECRUITMENT
<์คํจ์จ>
๋ฌธ์ ์ค๋ช
์ํผ ๊ฒ์ ๊ฐ๋ฐ์ ์ค๋ ๋ฆฌ๋ ํฐ ๊ณ ๋ฏผ์ ๋น ์ก๋ค. ๊ทธ๋ ๊ฐ ๋ง๋ ํ๋ ์ฆ ์ค์ฒ์ฑ์ด ๋์ฑ๊ณต์ ๊ฑฐ๋์ง๋ง, ์์ฆ ์ ๊ท ์ฌ์ฉ์์ ์๊ฐ ๊ธ๊ฐํ ๊ฒ์ด๋ค. ์์ธ์ ์ ๊ท ์ฌ์ฉ์์ ๊ธฐ์กด ์ฌ์ฉ์ ์ฌ์ด์ ์คํ ์ด์ง ์ฐจ์ด๊ฐ ๋๋ฌด ํฐ ๊ฒ์ด ๋ฌธ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ ๊น ๊ณ ๋ฏผ ํ ๊ทธ๋ ๋ ๋์ ์ผ๋ก ๊ฒ์ ์๊ฐ์ ๋๋ ค์ ๋์ด๋๋ฅผ ์กฐ์ ํ๊ธฐ๋ก ํ๋ค. ์ญ์ ์ํผ ๊ฐ๋ฐ์๋ผ ๋๋ถ๋ถ์ ๋ก์ง์ ์ฝ๊ฒ ๊ตฌํํ์ง๋ง, ์คํจ์จ์ ๊ตฌํ๋ ๋ถ๋ถ์์ ์๊ธฐ์ ๋น ์ง๊ณ ๋ง์๋ค. ์ค๋ ๋ฆฌ๋ฅผ ์ํด ์คํจ์จ์ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ.
- ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๋ค.
- ์คํ ์ด์ง์ ๋๋ฌํ์ผ๋ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์ / ์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์
์ ์ฒด ์คํ ์ด์ง์ ๊ฐ์ N, ๊ฒ์์ ์ด์ฉํ๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ๋ฉ์ถฐ์๋ ์คํ ์ด์ง์ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด stages๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์คํจ์จ์ด ๋์ ์คํ ์ด์ง๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์คํ ์ด์ง์ ๋ฒํธ๊ฐ ๋ด๊ฒจ์๋ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ํ ์ฌํญ
- ์คํ ์ด์ง์ ๊ฐ์ N์ 1 ์ด์ 500 ์ดํ์ ์์ฐ์์ด๋ค.
- stages์ ๊ธธ์ด๋ 1 ์ด์ 200,000 ์ดํ์ด๋ค.
- stages์๋ 1 ์ด์ N + 1 ์ดํ์ ์์ฐ์๊ฐ ๋ด๊ฒจ์๋ค.
- ๊ฐ ์์ฐ์๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ๋์ ์ค์ธ ์คํ ์ด์ง์ ๋ฒํธ๋ฅผ ๋ํ๋ธ๋ค.
- ๋จ, N + 1 ์ ๋ง์ง๋ง ์คํ ์ด์ง(N ๋ฒ์งธ ์คํ ์ด์ง)๊น์ง ํด๋ฆฌ์ด ํ ์ฌ์ฉ์๋ฅผ ๋ํ๋ธ๋ค.
- ๋ง์ฝ ์คํจ์จ์ด ๊ฐ์ ์คํ ์ด์ง๊ฐ ์๋ค๋ฉด ์์ ๋ฒํธ์ ์คํ ์ด์ง๊ฐ ๋จผ์ ์ค๋๋ก ํ๋ฉด ๋๋ค.
- ์คํ ์ด์ง์ ๋๋ฌํ ์ ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ์คํ ์ด์ง์ ์คํจ์จ์ 0์ผ๋ก ์ ์ํ๋ค.
๋ฌธ์ ํ์ด
- my solution
def solution(N, stages):
answer = []
temp=[0]*N
count=len(stages) #1๋จ๊ณ๋ ์ ๋ถ ์๋์ค์ด๋ฏ๋ก ์ฒ์์ ์ ์ฒด ์ธ์
j=0
for i in temp:
x=stages.count(j+1)
if(x==0 or count==0): #0์ผ๋ก ๋๋๊ธฐ ๋ฐฉ์ง
temp[j]=0
else:
temp[j]=x/count
j+=1
count-=x #์๋จ๊ณ ํด๋ฆฌ์ดํ์ง ๋ชปํ ์ฌ๋ ๋นผ๊ธฐ
while(temp.count(-1)!=len(temp)): #๋ด๋ฆผ์ฐจ์์ผ๋ก ์คํ
์ด์ง ์ ๋ ฌ
answer.append(temp.index(max(temp))+1)
temp[temp.index(max(temp))]=-1
return answer
N: ์คํ ์ด์ง ๊ฐ์
stages: ์ฌ์ฉ์๋ค์ด ํ์ฌ ๋์ ์ค์ธ ์คํ ์ด์ง์ ๋ฒํธ
temp: ์คํจ์จ์ ๋ํ๋ด๋ ๋ฆฌ์คํธ
answer: ์คํจ์จ์ด ๋์ ์คํ ์ด์ง๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์คํ ์ด์ง์ ๋ฒํธ๊ฐ ๋ด๊ฒจ์๋ ๋ฐฐ์ด
1) 1๋จ๊ณ๋ ์ ๋ถ ์๋ํ ๊ฒ์ด๋ฏ๋ก ์ ์ฒด ์ธ์์ผ๋ก setting
2) ์คํจ์จ์ ๊ณ์ฐํ๊ธฐ ์ํด ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์๋ฅผ ์ธ์ด x์ ์ ์ฅ
2-1) ๋์ ์ค์ธ ์ฌ์ฉ์๋ค์ ์ or ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์๊ฐ 0์ด๋ฉด ์คํจ์จ 0์ผ๋ก ์ ์ฅ
2-2) 0์ด ์๋ ๊ฒฝ์ฐ ๋์ ์ค์ธ (ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์)/(์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์) ๊ณ์ฐ
2-3) ๋ค์ ์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด์๋ ์ ๋จ๊ณ๋ฅผ ํด๋ฆฌ์ดํ์ง ๋ชปํ ์ฌ๋์ ๋นผ์ค๋ค
3) ๋ฆฌ์คํธ์ ๊ฐ์ด ์ ๋ถ ๋ค -1์ด ์๋ ๊ฒฝ์ฐ ๊ณ์ ๋ฐ๋ณต
3-1) ์ต๋๊ฐ์ ์ธ๋ฑ์ค๋ฅผ answer์ ์ ์ฅ
3-2) ๊ทธ ์ธ๋ฑ์ค์ ๊ฐ์ -1๋ก ์ ์ฅ
์ฒ์์ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ์์ง๋ง 0์ผ๋ก ๋๋๊ธฐ๋ฅผ ๋ฐฉ์งํ๋ if๋ฌธ์ ์ถ๊ฐํ์ฌ ํด๊ฒฐํ์๋ค.
์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ์คํ ์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅด๊ฒ ๊ตฌํํ์ฌ ํด๊ฒฐํ์๋ค.
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://programmers.co.kr/learn/challenges