πŸ’‘λ¬Έμ œ 뢄석 μš”μ•½

μ‹œκ°„ μ œν•œ λ©”λͺ¨λ¦¬ μ œν•œ
2초 256 MB

1λΆ€ν„° Nλ²ˆκΉŒμ§€ Nλͺ…μ˜ μ‚¬λžŒλ“€μ΄ 원을 이루어 앉아 μžˆμ„ λ•Œ,

λͺ¨λ“  μ‚¬λžŒμ΄ μ—†μ–΄μ§ˆλ•ŒκΉŒμ§€ N보닀 μž‘μ€ μž„μ˜μ˜ μ •μˆ˜λ²ˆμ§Έ μ‚¬λžŒμ„ λ°˜λ³΅ν•΄μ„œ 제거

μ΄λ•Œ, μ›μ—μ„œ μ‚¬λžŒλ“€μ΄ μ œκ±°λ˜λŠ” μˆœμ„œλ₯Ό (N, K) μš”μ„Έν‘ΈμŠ€ μˆœμ—΄μ΄λΌκ³  함.

<aside> πŸ”– 예) (7, 3)-μš”μ„Έν‘ΈμŠ€ μˆœμ—΄μ€ <3, 6, 2, 7, 5, 1, 4>

</aside>

μž…λ ₯

첫번째 쀄에 Nκ³Ό Kκ°€ 곡백 κ΅¬λΆ„μœΌλ‘œ μˆœμ„œλŒ€λ‘œ 주어짐 (1 ≀ K ≀ N ≀ 5,000)

좜λ ₯

<(N, K) μš”μ„Έν‘ΈμŠ€ μˆœμ—΄>

<aside> πŸ“Ž https://www.acmicpc.net/problem/1158

</aside>

πŸ’‘μ•Œκ³ λ¦¬μ¦˜ 섀계

  1. 덱을 μ΄μš©ν•œ 큐 클래슀 생성

  2. 두 개의 큐λ₯Ό 생성

    λΉ„μ–΄μžˆλŠ” 큐와 N개의 μ›μ†Œ(1 ~ N)κ°€ μžˆλŠ” 큐

  3. N개의 μ›μ†Œκ°€ μžˆλŠ” νμ—μ„œ K번째 μ›μ†Œλ₯Ό κΊΌλ‚΄κ³ (dequeue)

    κΊΌλ‚Έ 1 ~ (K-1) 번째 μ›μ†Œλ₯Ό λΉ„μ–΄μžˆλŠ” 큐에 λ„£κΈ°

  4. N개의 μ›μ†Œκ°€ μžˆλŠ” 큐가 λΉŒλ•ŒκΉŒμ§€ 2번 κ³Όμ • 반볡

  5. 3번 과정이 λλ‚˜λ©΄ 이제 기쑴의 λΉ„μ–΄μžˆλŠ” 큐에 (N - $\alpha$) 개의 μ›μ†Œ λ“€μ–΄μžˆμ„ 것

    이 큐에 2,3번 κ³Όμ • 반볡