๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv1] ์‹คํŒจ์œจ (Python) - 2019 KAKAO BLIND RECRUITMENT

sssbin 2023. 1. 26. 18:45

 

https://school.programmers.co.kr/learn/courses/30/lessons/42889

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

์ฒ˜์Œ์—” for๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ๋„๋‹ฌ๊ณผ ํด๋ฆฌ์–ด ๊ฐœ์ˆ˜๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ธ์„œ ๊ณ„์‚ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•œ ๋ฌธ์ œ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋–ด๊ณ , ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด์„œ ๊ทœ์น™์„ ์ฐพ์•„๋ƒˆ๋‹ค.

 

๊ฐ ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜๋Š” ์ „ ์Šคํ…Œ์ด์ง€๋ฅผ ํด๋ฆฌ์–ดํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜์™€ ๊ฐ™๊ณ ,

์–ด์ฐจํ”ผ ์œ„์˜ ๊ณผ์ •์—์„œ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์–ด์–ด์˜ ์ˆ˜๋Š” ๊ฑธ๋Ÿฌ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ–ˆ์ง€๋งŒ ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜๋Š” stages์—์„œ ํ•ด๋‹น ์ˆซ์ž(+1)์˜ count์™€ ๊ฐ™๋‹ค.

 

๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ ์Šคํ…Œ์ด์ง€ ๋ณ„๋กœ ์‹คํŒจ์œจ์„ ์ €์žฅํ•ด์ฃผ๊ณ  ์ •๋ ฌํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 42889: ์‹คํŒจ์œจ (2019 KAKAO BLIND RECRUITMENT)

import numpy

def solution(N, stages):
    answer = {}
    
    arrive = [0 for i in range(N)]
    stay = [0 for i in range(N)]

    arrive[0] = len(stages)
    stay[0] = stages.count(1)
    answer[1] = stay[0] / arrive[0]
    

    for i in range(1, N):
        arrive[i] = arrive[i-1] - stay[i-1]
        stay[i] = stages.count(i+1)

        if arrive[i] == 0:
            answer[i+1] = 0
        else:
            answer[i+1] = stay[i] / arrive[i]

    answer = list(dict(sorted(answer.items(), key=lambda x:x[1], reverse=1)).keys())
    
    return answer