#3. 구간 합 구하기 1

Untitled

문제 분석

⇒ 구간 합 개념을 활용해 보자!

손으로 풀기

Untitled

Pseudo code

Input> n(데이터 개수), m(질의 수)
Input> numbers에 숫자 저장

S[0] = 0 # prefix 지정

# 합 배열 만들어주기
for 1 이상 (n+1) 미만:
	S[i] = S[i-1] + numbers[i-1] 
	
m번 반복:
	Input> i(시작), j(끝)
	print(S[j] - S[i-1]) # 구간 합 출력

Implementation

## 입력
n, m = map(int, input().split()) # 데이터의 개수, 질의 개수
numbers = list(map(int, input().split())) # 숫자 저장

## 처리
S = [0] # 리스트 선언 및 prefix 선언

# 합 배열 만들어주기
for i in range(1, n+1):
    num_total = S[i-1] + numbers[i-1]
    S.append(num_total)

## 출력
# m번 반복
for k in range(m):
    i,j = map(int, input().split()) # 시작, 끝
    print(S[j] - S[i-1])

(채점 시 Pypy3로 언어 설정해야 채점됨,,)

#8. 투 포인터 - ‘좋은 수’ 구하기

Untitled

문제 분석

손으로 풀기

  1. 입력된 수 정렬
  2. 투 포인터 이동 원칙