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 |
댓글