[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/python] ์Šคํƒ/ํ : ํ”„๋ฆฐํ„ฐ

2021. 7. 19. 22:22

๋ฌธ์ œ์„ค๋ช…

์ผ๋ฐ˜์ ์ธ ํ”„๋ฆฐํ„ฐ๋Š” ์ธ์‡„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ฌธ์„œ๊ฐ€ ๋‚˜์ค‘์— ์ธ์‡„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ธ์‡„ํ•˜๋Š” ํ”„๋ฆฐํ„ฐ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กญ๊ฒŒ ๊ฐœ๋ฐœํ•œ ํ”„๋ฆฐํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ธ์‡„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ(J)๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ ๊บผ๋ƒ…๋‹ˆ๋‹ค.
  2. ๋‚˜๋จธ์ง€ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ J๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•œ ๊ฐœ๋ผ๋„ ์กด์žฌํ•˜๋ฉด J๋ฅผ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
  3. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด J๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 4๊ฐœ์˜ ๋ฌธ์„œ(A, B, C, D)๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ธ์‡„ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๊ณ  ์ค‘์š”๋„๊ฐ€ 2 1 3 2 ๋ผ๋ฉด C D A B ์ˆœ์œผ๋กœ ์ธ์‡„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ C๋Š” 1๋ฒˆ์งธ๋กœ, A๋Š” 3๋ฒˆ์งธ๋กœ ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ค‘์š”๋„๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด priorities์™€ ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ์–ด๋–ค ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” location์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋‚ด๊ฐ€ ์ธ์‡„๋ฅผ ์š”์ฒญํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์—๋Š” 1๊ฐœ ์ด์ƒ 100๊ฐœ ์ดํ•˜์˜ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ์‡„ ์ž‘์—…์˜ ์ค‘์š”๋„๋Š” 1~9๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์ˆซ์ž๊ฐ€ ํด์ˆ˜๋ก ์ค‘์š”ํ•˜๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  • location์€ 0 ์ด์ƒ (ํ˜„์žฌ ๋Œ€๊ธฐ๋ชฉ๋ก์— ์žˆ๋Š” ์ž‘์—… ์ˆ˜ - 1) ์ดํ•˜์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ์œผ๋ฉด 0, ๋‘ ๋ฒˆ์งธ์— ์žˆ์œผ๋ฉด 1๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

์ •๋‹ต

def solution(priorities, location):
    answer = 1
    target = priorities[location]
    priorities[location] = -1   # ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„์™€ ๊ตฌ๋ณ„ ์œ„ํ•ด -1๋กœ ๋ณ€๊ฒฝ

    while max(priorities) > target: # target๋ณด๋‹ค ํฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ์„ ๋•Œ
        answer += 1
        pop = priorities.index(max(priorities))
        priorities = priorities[pop+1:] + priorities[:pop]  # i๋ฒˆ์งธ ๊ฐ’ ์ œ์™ธ ์žฌ๋ฐฐ์น˜
    
    return answer + priorities[:priorities.index(-1)].count(target) # ์•ž์˜ ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„ count

location์— ์œ„์น˜ํ•œ ๊ฐ’์„ target์— ์ €์žฅํ•œ ๋‹ค์Œ location ์œ„์น˜ ๊ฐ’์„ -1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

-1๋กœ ๋ฐ”๊พธ๋Š” ์ด์œ ๋Š” ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐ’๋“ค๊ณผ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•จ์ด๋‹ค.

 

priorities์˜ ์ตœ๋Œ€๊ฐ’์ด target๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ target๋ณด๋‹ค ๋จผ์ € ํ”„๋ฆฐํŠธํ•ด์•ผํ•  ๊ฒƒ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

ํ”„๋ฆฐํŠธ ํšŸ์ˆ˜๋ฅผ ๋œปํ•˜๋Š” answer์— 1์„ ๋”ํ•˜๊ณ  pop์— ์ตœ๋Œ€๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•œ๋‹ค.

priorities๋ฅผ pop์„ ์ œ์™ธํ•œ ์ดํ›„์˜ ๊ฐ’๋“ค + pop ์ด์ „์˜ ๊ฐ’๋“ค ์ˆœ์„œ๋กœ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.

 

target๋ณด๋‹ค ํฐ ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ 

target๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•œ ํšŸ์ˆ˜ answer์— target ์•ž์— ์œ„์น˜ํ•œ ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•˜์—ฌ return ํ•œ๋‹ค.

728x90

BELATED ARTICLES

more