728x90
[백준] 2851번 Python 파이썬
https://www.acmicpc.net/problem/2851
< 문제 풀이 >
1. 10개의 정수를 입력 받아 num 리스트에 저장한다.
2. num_sum 리스트에 num 리스트의 i+1 개의 정수 합을 각 요소로 저장한다.
3. df는 abs 함수를 이용하여 num_sum의 첫 번째 원소와 100의 차이로 초기화하고, result는 num_sum의 첫 번째 요소로 초기화한다.
4. for문을 이용하여 num_sum의 두 번째 요소부터 각 요소와 100의 차이를 계산하고, df보다 작거나 같은지 확인한다.
if문을 사용하여 만약 같거나 작다면 df를 업데이트하고 result를 num_sum의 현재 요소로 업데이트한다.
만약 기존의 df보다 크다면 break 문으로 종료한다.
5. result를 출력한다.
import sys
num = []
for i in range(10):
num.append(int(sys.stdin.readline()))
num_sum = [0] * 10
num_sum[0] = num[0]
for i in range(1, 10):
num_sum[i] = num_sum[i-1] + num[i]
df = abs(100 - num_sum[0])
result = num_sum[0]
for i in num_sum[1:]:
if abs(100 - i) <= df:
df = abs(100 - i)
result = i
else:
break
print(result)
NameError가 뜬 이유 - result 변수를 미리 선언하지 않고, for문에서 먼저 사용하여 NameError가 발생하였다.
혼자 공부하며 올리는 블로그입니다. 틀린 내용은 댓글 남겨주시면 감사하겠습니다.
'BAEKJOON (Python) > Prefix Sum Algorithm' 카테고리의 다른 글
BAEKJOON_2559 "수열" PYTHON (0) | 2023.03.31 |
---|---|
BAEKJOON_2167 "2차원 배열의 합" PYTHON (0) | 2023.03.30 |
BAEKJOON_11660 "구간 합 구하기 5" PYTHON (0) | 2023.03.29 |
BAEKJOON_11659 "구간 합 구하기 4" PYTHON (0) | 2023.03.23 |