[๋ฐฑ์ค€] 1966. ํ”„๋ฆฐํ„ฐ ํ/Python - Silver3

2025. 3. 18. 16:58ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

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

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 34924 KB, ์‹œ๊ฐ„: 68 ms
๋ฉ”๋ชจ๋ฆฌ: 32412 KB, ์‹œ๊ฐ„: 52 ms
๋ฉ”๋ชจ๋ฆฌ: 32412 KB, ์‹œ๊ฐ„: 48 ms

๋ถ„๋ฅ˜

์ž๋ฃŒ ๊ตฌ์กฐ, ๊ตฌํ˜„, ํ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜

 

๋ฌธ์ œ ์„ค๋ช…

์—ฌ๋Ÿฌ๋ถ„๋„ ์•Œ๋‹ค์‹œํ”ผ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋ฆฐํ„ฐ ๊ธฐ๊ธฐ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ธ์‡„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ธ์‡„ ๋ช…๋ น์„ ๋ฐ›์€ ‘์ˆœ์„œ๋Œ€๋กœ’, ์ฆ‰ ๋จผ์ € ์š”์ฒญ๋œ ๊ฒƒ์„ ๋จผ์ € ์ธ์‡„ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์Œ“์ธ๋‹ค๋ฉด Queue ์ž๋ฃŒ๊ตฌ์กฐ์— ์Œ“์—ฌ์„œ FIFO - First In First Out - ์— ๋”ฐ๋ผ ์ธ์‡„๊ฐ€ ๋˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ทผ์ด๋Š” ์ƒˆ๋กœ์šด ํ”„๋ฆฐํ„ฐ๊ธฐ ๋‚ด๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋Š”๋ฐ, ์ด ํ”„๋ฆฐํ„ฐ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ธ์‡„๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

  1. ํ˜„์žฌ Queue์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ‘์ค‘์š”๋„’๋ฅผ ํ™•์ธํ•œ๋‹ค.
  2. ๋‚˜๋จธ์ง€ ๋ฌธ์„œ๋“ค ์ค‘ ํ˜„์žฌ ๋ฌธ์„œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด, ์ด ๋ฌธ์„œ๋ฅผ ์ธ์‡„ํ•˜์ง€ ์•Š๊ณ  Queue์˜ ๊ฐ€์žฅ ๋’ค์— ์žฌ๋ฐฐ์น˜ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ฐ”๋กœ ์ธ์‡„๋ฅผ ํ•œ๋‹ค.

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

์—ฌ๋Ÿฌ๋ถ„์ด ํ•  ์ผ์€, ํ˜„์žฌ Queue์— ์žˆ๋Š” ๋ฌธ์„œ์˜ ์ˆ˜์™€ ์ค‘์š”๋„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์–ด๋–ค ํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ์˜ˆ์—์„œ C๋ฌธ์„œ๋Š” 1๋ฒˆ์งธ๋กœ, A๋ฌธ์„œ๋Š” 3๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜๊ฒŒ ๋œ๋‹ค.

โœ๐Ÿปํ’€์ด

๋จผ์ € ํ˜„์žฌ ํ์—์„œ ๊ฐ€์žฅ ํฐ ์ค‘์š”๋„ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ๋ฅผ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ์ค‘์š”๋„๊ฐ€ ๋‚ฎ๋‹ค๋ฉด ํ์—์„œ popํ•˜๋ฉด ๋’ค๋กœ ๋‹ค์‹œ ๋„ฃ๋Š”๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค ํ˜„์žฌ ํ์˜ ๊ฐ€์žฅ ํฐ ์ค‘์š”๋„ ๊ฐ’๊ณผ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ฐพ๊ณ  ์žˆ๋Š” ์ถœ๋ ฅ๋ฌผ์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋Œ€๋กœ pop์„ ํ•˜๊ณ  cnt๋ฅผ 1 ์ฆ๊ฐ€ํ•˜์—ฌ ๋ช‡ ๋ฒˆ์งธ์ธ์ง€ ๊ณ„์‚ฐํ•œ๋‹ค.

์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๊ฐ€์žฅ ํฐ ์ค‘์š”๋„ ๊ฐ’์ผ ๋•Œ ์ฐพ๊ณ  ์žˆ๋Š” ์ถœ๋ ฅ๋ฌผ์„ ์ฐพ์•˜๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

ํ๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline

T = int(input())

for t in range(T):
    N, M = map(int, input().split())
    D = list(zip(list(map(int, input().split())), range(N)))
    q = deque(D)
    cnt = 1
    while q:
        mx = max(q)[0]
        d = q.popleft()
        if d[0] < mx:
            q.append(d)
        elif d[0] == mx:
            if d[1] == M:
                print(cnt)
                break
            else:
                cnt += 1

๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ(zip์œผ๋กœ tuple ์ƒ์„ฑ ํ›„ list๋กœ ๋ณ€ํ™˜)

import sys

input = sys.stdin.readline

T = int(input())

for t in range(T):
    N, M = map(int, input().split())
    D = list(zip(list(map(int, input().split())), range(N)))
    cnt = 1
    while D:
        mx = max(D)[0]
        d = D.pop(0)
        if d[0] < mx:
            D.append(d)
        elif d[0] == mx:
            if d[1] == M:
                print(cnt)
                break
            else:
                cnt += 1

๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ(List Comprehension ์‚ฌ์šฉ)

import sys

input = sys.stdin.readline

T = int(input())

for t in range(T):
    N, M = map(int, input().split())
    D = [(x, y) for x, y in zip(list(map(int, input().split())), range(N))]
    cnt = 1
    while D:
        mx = max(D)[0]
        d = D.pop(0)
        if d[0] < mx:
            D.append(d)
        elif d[0] == mx:
            if d[1] == M:
                print(cnt)
                break
            else:
                cnt += 1

๐Ÿ“ํ›„๊ธฐ

๋ฆฌ์ŠคํŠธ์—์„œ pop(0)์„ ํ•˜๋ฉด O(N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๊ฑธ๋ฆฌ๊ณ , deque์œผ๋กœ popํ•˜๋ฉด O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ deque์ด list๋ณด๋‹ค ๋น ๋ฅด๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ฒ˜์Œ์— deque์„ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ max ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—์„œ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฆฌ์ŠคํŠธ์—์„œ max๋Š” ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ CPU  ์บ์‹œ ํ™œ์šฉ์ด ์šฉ์ดํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋ฉด์— deque์€ ๋…ธ๋“œ ๊ธฐ๋ฐ˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ˆœํšŒํ•˜๋Š” ๊ณผ์ •์—์„œ ์ถ”๊ฐ€์ ์ธ ํฌ์ธํ„ฐ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์˜คํžˆ๋ ค ๋” ๋А๋ฆฐ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™๋‹ค.heapq๋„ ๊ณ ๋ คํ•˜๊ธด ํ–ˆ๋Š”๋ฐ ์ด๋Ÿฌ๋ฉด popํ•  ๋•Œ ์ˆœ์„œ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 1158. ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ/Python - Silver4  (0) 2025.04.01
[๋ฐฑ์ค€] 1068. ํŠธ๋ฆฌ/Python - Gold5  (0) 2025.03.19
[๋ฐฑ์ค€] 2800. ๊ด„ํ˜ธ ์ œ๊ฑฐ/Python - Gold4  (1) 2025.03.18
[๋ฐฑ์ค€]14940. ์‰ฌ์šด ์ตœ๋‹จ๊ฑฐ๋ฆฌ/Python - Silver1  (0) 2025.03.10
[๋ฐฑ์ค€] 17298.์˜คํฐ์ˆ˜/Python - Gold4  (0) 2025.03.07
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 1158. ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ/Python - Silver4
  • [๋ฐฑ์ค€] 1068. ํŠธ๋ฆฌ/Python - Gold5
  • [๋ฐฑ์ค€] 2800. ๊ด„ํ˜ธ ์ œ๊ฑฐ/Python - Gold4
  • [๋ฐฑ์ค€]14940. ์‰ฌ์šด ์ตœ๋‹จ๊ฑฐ๋ฆฌ/Python - Silver1
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (174)
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (88)
        • Algorithms (80)
        • SQL (7)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์˜ค๋ธ”์™„
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    ๋„คํŠธ์›Œํฌ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    programmers
    ์ž๋ฐ”
    Shell Script
    ๋ฆฌ๋ˆ…์Šค
    Shell
    bfs
    ๋„์ปค
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    Java
    Linux
    Baekjoon
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    network
    dfs
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    K8s
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    docker
    ๋ฐฑ์ค€
    Kubernetes
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[๋ฐฑ์ค€] 1966. ํ”„๋ฆฐํ„ฐ ํ/Python - Silver3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”