Algorithm/Baekjoon

[백준 21318] 피아노 체조 (Python)

문제 링크 #

문제 해설 #

Idea #

  • Prefix Sum
  • 실수한 곡에 대한 누적합을 구하고 인덱싱을 통해 특정 구간에 대한 누적합 출력
  • 마지막 곡은 항상 성공하기 때문에 y에 대한 누적합과 y-1에 대한 누적합이 다르면 1 감소

Time Complexity #

  • Prefix Sum: O(N) = 100,000

Data Size #

  • N: 1 <= int <= 100,000
  • scores: int(10^9) * N
  • Q: 1 <= int <= 100,000

해설 코드 #

python
import sys
input = sys.stdin.readline

N = int(input())
scores = list(map(int, input().split()))
Q = int(input())

fails = [0]*(N+1)
for i in range(1,N+1):
    fails[i] = fails[i-1] + int(scores[i-1] > scores[min(i,N-1)])

for _ in range(Q):
    x, y = map(int, input().split())
    answer = fails[y] - fails[x-1]
    if fails[y] != fails[y-1]:
        answer -= 1
    print(answer)
PREV [백준 22859] HTML 파싱 (Python) NEXT [백준 16987] 계란으로 계란치기 (Python)