25400 제자리 _python

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

     

    25400번: 제자리

    $N$장의 카드가 좌우 일렬로 놓여있다. 각 카드에는 하나의 정수가 적혀있는데, 왼쪽에서 $i$번째 카드에 적혀있는 정수는 $A_i$다. ($1 ≤ i ≤ N$) 여러분은 $N$장의 카드 중 몇 장을 골라 제거할 수

    www.acmicpc.net

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    문제 접근

    그리디 알고리즘

    deque를 사용해서 풀었다.

    popleft의 값이 1일때 까지 꺼냄.

    1이면 +1을 해주고, 아니면 count++

    popleft의 값이 2일때 까지 꺼냄.

    2면 +1을 해주고, 아니면 count++

    반복...

     

    배열이 비게되면 count 출력

     

     

    쉽게 풀렸다

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    코드

    from collections import deque
    import heapq
    import sys
    input = sys.stdin.readline
    
    """
    25400
    n=1
    배열이 있는동안 반복:
        첫번째 카드가 n일때 까지 pop, count++
        첫번째 카드가 n이 되면 그냥 pop
    count출력
    
    """
    
    N = int(input())
    queue = deque(list(map(int,input().split())))
    curNum = 1
    count = 0
    
    while queue:
        x = queue.popleft()
        if x == curNum:
            curNum += 1
        else:
            count += 1
    
    print(count)

     

    '백준 > 문제풀이_python' 카테고리의 다른 글

    262624 빅데이터? 정보보호! python  (0) 2022.12.17
    1764 듣보잡 _python  (0) 2022.12.16
    2467 용액 _python  (0) 2022.12.15
    16948 데스 나이트 _python  (0) 2022.12.14
    11497 통나무 건너뛰기 _python  (0) 2022.12.14

    댓글