๋ฐฑ์ค€

[๋ฐฑ์ค€-Python] ํšŒ์ „ํ•˜๋Š” ํ : 1021๋ฒˆ

Yuuuki 2024. 6. 5. 22:27

๐Ÿฅˆ Silver3

https://www.acmicpc.net/problem/1021

 

 

 

 

โœ… ์ •๋‹ตํ’€์ด

import sys
from collections import deque
input = sys.stdin.readline

n, m = map(int, input().split())
num_list = list(map(int, input().split()))


# 2๋ฒˆ๊ณผ 3๋ฒˆ ์ค‘ ์–ด๋А ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ• ์ง€-> ์ค‘๊ฐ„ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น index๊ฐ€ ๊ฐ€๊นŒ์šด์ชฝ์œผ๋กœ
q = deque([i for i in range(1, n + 1)])


result = 0
for num in num_list:

    while True:
        # ๋งจ์•ž ์š”์†Œ๊ฐ€ ๋น ์ ธ๋‚˜๊ฐˆ์ˆ˜์žˆ๋Š”์ง€ ํ™•์ธ
        if q[0] == num:
            q.popleft()
            break

        idx = q.index(num)
        mid = len(q) // 2
        if idx <= mid:
            # 2๋ฒˆ ๊ณผ์ •
            q.append(q.popleft())
        else:
            # 3๋ฒˆ ๊ณผ์ •
            q.appendleft(q.pop())
        result += 1

print(result)

#34160	64
๋ฉ”๋ชจ๋ฆฌ ์‹คํ–‰์‹œ๊ฐ„
34160 64

 

 

์ด ๋ฌธ์ œ๋Š” ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ฆฐ ๋ฌธ์ œ์ง€, ์ƒ๊ฐ๋ณด๋‹ค ์ ‘๊ทผ๋ฐฉ์‹์€ ์‰ฌ์› ๋˜๊ฒƒ ๊ฐ™๋‹ค.

3๋ฒˆ๊ณผ์ •์„ ํ†ตํ•ด ๋งจ์˜ค๋ฅธ์ชฝ ์š”์†Œ๊ฐ€ ๋งจ์•ž์œผ๋กœ ์˜ฌ๋•Œ๋งŒ ์นด์šดํŠธ๋ฅผ ํ•˜๊ณ , ๋ฝ‘์•„๋‚ด๋Š”๊ฑด queue์ฒ˜๋Ÿผ ๋งจ์•ž์—์„œ๋งŒ ๋ฝ‘๋Š” 1๋ฒˆ๊ณผ์ •์„ ํ†ตํ•ด ์ผ์–ด๋‚˜๋Š”๊ฒƒ์ธ๋ฐ

๋งจ๋’ค์—์„œ๋งŒ ์žˆ์–ด๋„ ๋ฐ”๋กœ ์š”์†Œ๋ฅผ ๊บผ๋‚ผ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ์นด์šดํŠธ๋ฅผ ํ•˜์ง€ ์•Š๋‹ค๋ณด๋‹ˆ ๋ฌธ์ œ ์ดํ•ด์— ์˜ค๋žœ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ๋‹ค.

 

2,3๋ฒˆ ๋ฐฉ๋ฒ•์ค‘ ์–ด๋А ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ์นด์šดํŠธ๋งŒ ํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผํ• ์ง€๊ฐ€ ํฌ์ธํŠธ์ธ๋ฐ 

๋ฝ‘์•„๋‚ด๊ณ  ์‹ถ์€ ์š”์†Œ๊ฐ€ ๊ฐ€์šด๋ฐ๋ฅผ ๊ธฐ์ ์œผ๋กœ ์™ผ์ชฝ์— ๊ฐ€๊นŒ์šฐ๋ฉด 2๋ฒˆ, ์˜ค๋ฅธ์ชฝ์— ๊ฐ€๊นŒ์šฐ๋ฉด 3๋ฒˆ์„ ์„ ํƒํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—

๋ฝ‘์•„์•ผํ•˜๋Š” idx๋ฅผ ๊ตฌํ•˜๊ณ , mid ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•œ๋‹ค์Œ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋œ๋‹ค!