[BOJ 12836] - 가계부 (Easy) (구현, Python)

보양쿠·2022년 11월 9일
0

BOJ

목록 보기
73/260
post-custom-banner

난이도 Hard 버전이 궁금하다면 가계부 (Hard)

BOJ 12836 - 가계부 (Easy) 링크
(2022.11.09 기준 B2)

문제

다음과 같은 두 종류의 쿼리가 Q개 주어진다.
1. 1 p x : 생후 p일에 x를 추가한다. (1 ≤ p ≤ N, -2*10^9 ≤ x ≤ 2*10^9)
2. 2 p q : 생후 p일부터 q일까지 변화한 양을 출력한다. (1 ≤ p ≤ q ≤ N)

2번 쿼리에 대해 계산된 값을 각 줄에 출력

알고리즘

쿼리를 그대로 구현해보자.

풀이

(살아온 날 + 1)을 크기로 하여 리스트를 만들자. 0으로 초기화.

1번 쿼리가 나오면 인덱스 p에 x를 더해주자. 음수가 나와도 그대로 더하면 된다.
2번 쿼리가 나오면 sum 연산을 이용하여 인덱스 p부터 q까지의 합을 구해서 출력하자.

Easy는 범위가 작아 정말 간단한 구현 문제다.

코드

import sys; input = sys.stdin.readline

def solve():
    N, Q = map(int, input().split())
    money = [0] * (N + 1) # 살아온 날마다의 수입이나 지출

    for _ in range(Q):
        query, p, q = map(int, input().split())
        if query == 1: # 1번 쿼리
            money[p] += q
        else: # 2번 쿼리
            print(sum(money[p:q + 1]))

solve()

여담

그야말로 Easy

profile
GNU 16 statistics & computer science
post-custom-banner

0개의 댓글