문제요약
나의 코드 및 설명
- score : 각 점수를 저장
- score_sum_list : 각 점수의 합을 저장
- score_sum_list 안의 값이 모두 100 이하일 경우 리스트의 가장 마지막 인덱스의 값을 출력한다.
- score_sum_list 안의 값이 100이면, 100을 출력하고 반복문을 탈출한다.
- 위 두 if 조건에 해당되지 않는다면, score_sum_list의 이전 인덱스 값과, 현재 인덱스 값을 비교하여 100과의 차이가 가장 근소한 것을 출력한다.
score = []
score_sum_list = []
score_sum = 0
for i in range(10):
score.append(int(input()))
score_sum += score[i]
score_sum_list.append(score_sum)
if score_sum_list[9] <= 100:
print(score_sum_list[9])
else:
for i in range(10):
if score_sum_list[i] == 100:
print(score_sum_list[i])
break
else:
if 100 - score_sum_list[i] < 0:
if 100 - score_sum_list[i-1] < score_sum_list[i] - 100:
print(score_sum_list[i-1])
elif 100 - score_sum_list[i-1] > score_sum_list[i] - 100:
print(score_sum_list[i])
elif 100 - score_sum_list[i-1] == score_sum_list[i] - 100:
print(max(score_sum_list[i-1],score_sum_list[i]))
break
다른 사람의 풀이
- score : 입력받는 점수의 합이 누적되어 저장된다.
- if 100 - result >= abs(100 - score) 을 통해
누적된 score 값중 100과 제일 근소한 값을 result에 저장한다.
import sys
result = 0
score = 0
for _ in range(10):
n = sys.stdin.readline()
score += n
if 100 - result >= abs(100 - score):
result = score
print(result)
피드백
리스트를 이용해서 문제를 푸는 방식에는 제법 익숙해진 것 같다. 하지만 이번 문제는 리스트를 이용하지 않아도 풀 수 있을 것처럼 보였는데 구현하는 것이 생각대로 되지 않아서 결국엔 또 리스트를 이용했다.. 불필요한 메모리에 유의하고, 좀 더 논리적으로 문제풀이 해보자.
'Baekjoon > IM Level' 카테고리의 다른 글
[백준] 1157 단어 공부 (브론즈1) / upper() (0) | 2023.03.01 |
---|---|
[백준] 2164 카드2 (실버4) / deque() (0) | 2023.03.01 |
[백준] 2810 컵홀더 (브론즈1) (0) | 2023.02.24 |
[백준] 2563 색종이 (실버5) (0) | 2023.02.23 |
[백준] 2527 직사각형 (실버1) (0) | 2023.02.23 |