반응형
문제링크
문제
문제풀이
x, y의 구간에서 주어진 난이도(arr) arr[i] > arr[i+1] 개수를 찾는 문제.
모든 주어진 질문을 완전 탐색으로 하면 시간초과가 났습니다. 구간을 검색해봤던 곳을 또 검색하는 경우가 있을 거라고 생각해서 누적합을 이용하면 된다고 생각했다. 난이도 배열을 한번 돌면서 전 난이도랑 비교하고 누적합을 더해주었다
따라서, dp[y] - dp[x]가 정답이 된다.
파이썬 코드
import sys
"""
피아노 체조
https://www.acmicpc.net/problem/21318
"""
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
arr.insert(0, 0)
Q = int(input())
dp = [0] * (N + 1)
answer = ""
for i in range(1, N + 1):
dp[i] = dp[i - 1]
if arr[i] < arr[i - 1]:
dp[i] += 1
for _ in range(Q):
x, y = map(int, input().split())
answer += str(dp[y] - dp[x]) + "\n"
print(answer)
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬][백준] 다각형의 면적 (0) | 2022.01.25 |
---|---|
백준 14674. 영우는 사기꾼? (0) | 2021.12.25 |
백준 1863. 스카이라인 쉬운거 (0) | 2021.12.24 |
백준 18116. 로봇 조립 (0) | 2021.12.23 |
백준 1992. 쿼드트리 (0) | 2021.12.22 |
댓글