백준 - 1292 쉽게 푸는 문제 python 문제풀이 [Hellfer]
https://www.acmicpc.net/problem/1292
1292번: 쉽게 푸는 문제
첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.
www.acmicpc.net
🔷 알고리즘 분류 - 수학, 구현 난이도 - 브론즈 1
🔶문제 풀이 - 반복문을 이용한 풀이
n, m = map(int, input().split()) # n과 m을 입력받습니다.
x = 0 # 결과를 저장할 변수 x를 초기화합니다.
result = [] # 결과를 저장할 리스트 result를 초기화합니다.
# 1부터 m까지 반복합니다.
for i in range(1, m + 1):
# i번째 수를 i번씩 result 리스트에 추가합니다.
for j in range(i):
result.append(i)
# n-1부터 m까지의 인덱스를 갖는 result의 원소들을 x에 더합니다.
for i in range(n - 1, m):
x += result[i]
print(x) # 결과 x를 출력합니다.
🔶문제 이해하기
1. 입력값이 아래와 같다고 가정해 보겠습니다.
3 7
n, m = map(int, input(). split())에 의해 n에는 3, m에는 7이 할당됩니다.
2. 변수 초기화
x = 0에 의해 변수 x는 0으로 초기화됩니다.
result = []에 의해 빈 리스트 result가 생성됩니다.
3. 이중 반복문을 통한 리스트 생성
첫 번째 반복문: for i in range(1, m + 1)에 의해 i는 1부터 7까지 반복됩니다.
두 번째 반복문: for j in range(i)에 의해 j는 0부터 i-1까지 반복됩니다.
result.append(i)에 의해 i를 result 리스트에 i번씩 추가합니다. (예: 1은 1번, 2는 2번, 3은 3번 추가됩니다.)
이 과정을 거치면 result 리스트는 [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7]이 됩니다.
4. 결과 계산
두 번째 반복문: for i in range(n - 1, m)에 의해 i는 2부터 6까지 반복됩니다.
x += result [i]에 의해 result 리스트의 i번째 원소를 x에 더합니다.
이 과정을 거치면 x의 값은 2 + 3 + 3 + 3 + 4 = 15가 됩니다.
5. 결과 출력
print(x)에 의해 x의 값인 15가 출력됩니다.