Tiny Bunny
본문 바로가기
Algorithm/Python

[BOJ #17390] 이건 꼭 풀어야 해!

by nowag 2024. 4. 23.

문제

숭실골 높은 언덕 깊은 골짜기에 출제로 고통 받는 욱제가 살고 있다!

욱제는 또 출제를 해야 해서 단단히 화가 났다. 그래서 욱제는 길이 N짜리 수열 A를 만들고, A를 비내림차순으로 정렬해서 수열 B를 만들어 버렸다!! 여기서 B를 출력하기만 하면 문제가 너무 쉬우니까 하나만 더 하자. 아래와 같은 질문이 무려 Q개나 주어진다!! (ㅎㅎ;; ㅈㅅ.. ㅋㅋ!!)

  • L R: BL + BL+1 + ... + BR-1 + BR 을 출력한다.

Figure 1. 모든 참가자가 문제를 풀 수 있을 것이라고 기대하는 욱제의 표정

 

욱제의 질문에 답하고 함께 엠티를 떠나자!!

 

입력

첫 번째 줄에 수열 A의 길이 N과 질문의 개수 Q가 공백으로 구분되어 주어진다. (1 ≤ N, Q ≤ 300,000)

두 번째 줄에 N개의 정수 A1, A2, ..., AN 이 공백으로 구분되어 주어진다. Ai 는 수열 A의 i 번째 수이다. (1 ≤ Ai ≤ 1,000)

세 번째 줄부터 Q개의 줄에 걸쳐 욱제의 질문을 의미하는 두 수 L, R이 공백으로 구분되어 주어진다. (1 ≤ L ≤ R ≤ N)

주어지는 모든 입력은 자연수이다.

 

출력

Q개의 줄에 걸쳐, 질문의 답을 순서대로 각각 출력한다.

 

내가 쓴 코드

from sys import stdin; input = stdin.readline
# N : 수열 A의 길이, Q : 질문 수
N, Q = map(int, input().split())
A = list(map(int, input().split()))
A.sort()

S = [0] * (N + 1)
for i in range(1, N+1):
    S[i] = S[i-1] + A[i-1]

for _ in range(Q):
    L, R = map(int, input().split())
    print(S[R] - S[L-1])

너무 쉽게 풀었다가 시간초과로 혼났당... 아니 어떻게 처음부터 이렇게 생각하고 풀 수가 있을까용..? 어려워어!!ㅠㅜ

 

제출 결과

728x90
반응형

'Algorithm > Python' 카테고리의 다른 글

[BOJ #14553] 팰린드롬 게임  (0) 2024.04.30
[BOJ #1764] 듣보잡  (0) 2024.04.30
[BOJ #1026] 보물  (1) 2024.04.23
[BOJ #9625] BABBA  (0) 2024.04.18
[BOJ #6198] 옥상 정원 꾸미기  (1) 2024.04.17