๐กsolutions )
๐ฌ ์ด๋ฒ์ ๊ตฌํํ ๋ก์ง์ด ํจ์จ์ฑ๋ฉด์์๋ ์ข์ง ๋ชปํ ์ฝ๋๋ค. ํนํ for๋ฌธ ์์์ ๋งค๋ฒ count()๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(N²)์ด๊ณ , remove() ๋ฉ์๋๊น์ง ์๊ธฐ ๋๋ฌธ์ ๋งจ ์ฒ์ stages.sort()๋ฅผ ํ์ง ์์ผ๋ฉด ๋ช๊ฐ์ง ํ ์คํธ ์ผ์ด์ค์์ ์๊ฐ์ด๊ณผ๋ก ํต๊ณผํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๐ฌ ์ฐธ๊ณ ๋ก ์ฒซ ์๋์์ 1,6,7,9,13,23,24,25 ํ ์คํธ ์ผ์ด์ค๋ ๋ฐํ์์๋ฌ๊ฐ ๋ฌ๊ณ , ์ง๋ฌธํ๊ธฐ๋ฅผ ํตํด ์ด๋ค ๊ฒ์ด ๋ฌธ์ ์ธ์ง ํ์ธํด๋ณด๋ -> for๋ฌธ ์์์ ์ ์ฒด ๋จ์์๋ total_user๊ฐ 0์ธ ๊ฒฝ์ฐ fail_user/total_user๋ก ๊ณ์ฐํ๊ฒ ๋๋ฉด ZeroDivisionError๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด ๋ฌธ์ ์๋ค.
๐ฌ ํน์ ํ์์ ๊ฐ์ ํ ์คํธ์ผ์ด์ค๊ฐ ๋ฐํ์์๋ฌ ๋๋ ๊ฒฝ์ฐ ์๋ ํ ์คํธ์ผ์ด์ค๋ฅผ ์ฌ์ฉํด๋ณด์๊ธธ ๋ฐ๋๋๋ค ๐
N : 5 stages : [1,2,2,1,3] result : [3,2,1,4,5] ์ถ์ฒ : https://programmers.co.kr/questions/14932 |
๐จ๐ปcode )
def solution(N, stages):
answer = []
stages.sort()
for i in range(1, N+1):
fail_user = stages.count(i)
total_user = len(stages)
if total_user:
answer.append((fail_user/total_user, i))
else:
answer.append((0, i))
while fail_user > 0:
stages.remove(i)
fail_user -= 1
answer.sort(key=lambda x:(-x[0], x[1]))
return [stage for rate, stage in answer]
๐description )
์คํจ์จ์ํผ ๊ฒ์ ๊ฐ๋ฐ์ ์ค๋ ๋ฆฌ๋ ํฐ ๊ณ ๋ฏผ์ ๋น ์ก๋ค. ๊ทธ๋ ๊ฐ ๋ง๋ ํ๋์ฆ ์ค์ฒ์ฑ์ด ๋์ฑ๊ณต์ ๊ฑฐ๋์ง๋ง, ์์ฆ ์ ๊ท ์ฌ์ฉ์์ ์๊ฐ ๊ธ๊ฐํ ๊ฒ์ด๋ค. ์์ธ์ ์ ๊ท ์ฌ์ฉ์์ ๊ธฐ์กด ์ฌ์ฉ์ ์ฌ์ด์ ์คํ ์ด์ง ์ฐจ์ด๊ฐ ๋๋ฌด ํฐ ๊ฒ์ด ๋ฌธ์ ์๋ค.์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ ๊น ๊ณ ๋ฏผ ํ ๊ทธ๋ ๋ ๋์ ์ผ๋ก ๊ฒ์ ์๊ฐ์ ๋๋ ค์ ๋์ด๋๋ฅผ ์กฐ์ ํ๊ธฐ๋ก ํ๋ค. ์ญ์ ์ํผ ๊ฐ๋ฐ์๋ผ ๋๋ถ๋ถ์ ๋ก์ง์ ์ฝ๊ฒ ๊ตฌํํ์ง๋ง, ์คํจ์จ์ ๊ตฌํ๋ ๋ถ๋ถ์์ ์๊ธฐ์ ๋น ์ง๊ณ ๋ง์๋ค. ์ค๋ ๋ฆฌ๋ฅผ ์ํด ์คํจ์จ์ ๊ตฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ.
์ ํ์ฌํญ
1๋ฒ ์คํ ์ด์ง์๋ ์ด 8๋ช ์ ์ฌ์ฉ์๊ฐ ๋์ ํ์ผ๋ฉฐ, ์ด ์ค 1๋ช ์ ์ฌ์ฉ์๊ฐ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ 1๋ฒ ์คํ ์ด์ง์ ์คํจ์จ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ง์ง๋ง ์คํ ์ด์ง์ ์์ผ๋ฏ๋ก 4๋ฒ ์คํ ์ด์ง์ ์คํจ์จ์ 1์ด๋ฉฐ ๋๋จธ์ง ์คํ ์ด์ง์ ์คํจ์จ์ 0์ด๋ค.
|