[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

2021. 1. 8. 18:20ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ธฐ๋Šฅ๊ฐœ๋ฐœ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š”

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋  ๋•Œ ํ•จ๊ป˜ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์˜ ์ง„๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด progresses์™€ ๊ฐ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด speeds๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๊ฐ ๋ฐฐํฌ๋งˆ๋‹ค ๋ช‡ ๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ์ž‘์—…์˜ ๊ฐœ์ˆ˜(progresses, speeds๋ฐฐ์—ด์˜ ๊ธธ์ด)๋Š” 100๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์ง„๋„๋Š” 100 ๋ฏธ๋งŒ์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์†๋„๋Š” 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ๋Š” ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ๋งŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋ฃจ์˜ ๋์— ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง„๋„์œจ์ด 95%์ธ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ•˜๋ฃจ์— 4%๋ผ๋ฉด ๋ฐฐํฌ๋Š” 2์ผ ๋’ค์— ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

ํ’€์ด ๊ณผ์ •

์ฒ˜์Œ์— ๊ฐ progress๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜์—ฌ queue์— ์ €์žฅํ•˜์˜€๋‹ค.

๊ทธ ๋‹ค์Œ queue์˜ item์„ ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•˜๋ฉฐ ํ˜„์žฌ item์ด ์ด์ „ item ๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ˜„์žฌ item์„ ์ด์ „ item์œผ๋กœ ๋ฐ”๊พธ๊ฒŒ ํ•˜๋Š” ์‹์œผ๋กœ 

for๋ฌธ์„ ๊ตฌํ˜„ํ•˜์—ฌ ํ•ด๋‹น ๋‚ ์งœ์— ๋ช‡๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๋Š”์ง€ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. Counter ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ 1, 10, 20์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด ๊ทธ ๊ฐœ์ˆ˜๋“ค์„ answer์— ์ €์žฅํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค. ํžˆ๋“  ๋ฌธ์ œ์ธ ํ…Œ์ŠคํŠธ 11์—์„œ ์ž๊พธ ์‹คํŒจ๊ฐ€ ๋‚ฌ์—ˆ๋Š”๋ฐ ์งˆ๋ฌธํ•˜๊ธฐ๋“ค์„ ๋ณด๋‹ˆ, progress ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์˜ฌ๋ฆผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. math ๋ชจ๋“ˆ์˜ ceil์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์˜ฌ๋ฆผ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

from collections import Counter
import math

def solution(progresses, speeds):
    answer = []
    queue = []
    for progress, speed in zip(progresses, speeds):
        queue.append(math.ceil((100 - progress) / speed))

    i = 0
    for j in range(1, len(queue)):
        if queue[j] < queue[i]:
            queue[j] = queue[i]
        i += 1

    count = Counter(queue).items()
    for item in count:
        answer.append(item[1])

    return answer


print(solution(	[93, 30, 55],  [1, 30, 5]))

 

๋ฐ˜์‘ํ˜•