[BOJ] 11659. 구간 합 구하기 4

2025. 7. 17. 13:31·BOJ

📌 문제 제목

문제 링크: BOJ 11659

🗒️ 문제 설명

수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램

시간 제한: 1초

메모리 제한 256MB

1 <= N <= 100,000

1 <= M <= 100,000

1 <= i <= j <= N

e.g.
입력
5 3 # N과 M (N: 수의 개수, M: 합을 구해야 하는 횟수)
5 4 3 2 1 (수열 N)
1 3 (i, j)
2 4 (i, j)
5 5 (i, j)

출력
12 (5 + 4 + 3)
9 (4 + 3 + 2)
1 (1)

💡 문제 해결 아이디어

  • N과 M이 최대 100,000이기 때문에 시간 복잡도 O(N log N)의 알고리즘 필요
  • i부터 j까지의 합은 1부터 j까지의 합 - 1부터 i-1 까지의 합
  • 테이블 정의
    • dp[i]는 1번째 값부터 i번째 까지의 합
  • 점화식 찾기
    • dp[i] = dp[i-1] + seq[i]

⌛️ 시간 복잡도

  • O(N+M)

✅ 최종 코드

import sys
input = sys.stdin.readline

N, M = map(int, input().split())
n_seq = list(map(int, input().split()))

dp = [0] + [-1] * N
for i, val in enumerate(n_seq):
    dp[i + 1] = dp[i] + val

for _ in range(M):
    i, j = map(int, input().split())
    print(dp[j] - dp[i-1])

 

'BOJ' 카테고리의 다른 글

[BOJ] 4949. 균형잡힌 세상  (0) 2025.07.21
[BOJ] 12852. 1로 만들기 2  (0) 2025.07.17
[BOJ] 1874. 스택 수열  (0) 2025.07.17
[BOJ] 11726 2xn 타일링  (0) 2025.07.16
[BOJ] 1149. RGB거리  (0) 2025.07.16
'BOJ' 카테고리의 다른 글
  • [BOJ] 4949. 균형잡힌 세상
  • [BOJ] 12852. 1로 만들기 2
  • [BOJ] 1874. 스택 수열
  • [BOJ] 11726 2xn 타일링
rubato.dev
rubato.dev
  • rubato.dev
    rubato.dev
    rubato.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (33) N
      • BOJ (28)
      • 알고리즘 (4)
      • TIL (0)
      • Project (1) N
  • 인기 글

  • 태그

    PriorityQueue
    스택
    PYTHON
    dp
    stack
    Zelda
    BOJ
    backtracking
    Algorithm
    투 포인터
    BFS
    Project
    DFS
    Next.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
rubato.dev
[BOJ] 11659. 구간 합 구하기 4
상단으로

티스토리툴바