https://www.acmicpc.net/problem/2851
문제 풀이
- 중간에 버섯을 중단한다면, 그 이후의 버섯은 모두 먹을 수 없다.
- => 뒤에서부터 하나씩 빼고 더한다.
- => 첫번째 버섯부터 열번째 버섯, 첫번째 버섯부터 아홉번째 버섯 ...
- 딕셔너리 key로 부분합을 value값으로 100 차이값의 절대값을 저장한다.
- 점수의 합은 최대한 100과 가깝고 동일한 차이값을 가진다면 더 큰 점수가 출력된다.
- => 1. 차이값을 오름차순으로 정렬하고, 2.부분합은 내림차순으로 정렬하여 첫번째 key값을 반환한다.
soltuion - 성공
import sys
score = [int(sys.stdin.readline()) for _ in range(10)]
result = {}
for i in range(10,-1,-1):
score_sum = sum(score[:i])
result[score_sum] = abs(100 -score_sum)
sort_result = sorted(result.items(), key = lambda x:(x[1],-x[0]) )
print(sort_result[0][0])
새롭게 알게 된 점.
sort_result = sorted(result.items(), key = lambda x:(x[1],-x[0]) )
- 람다 함수를 활용해 다중 조건을 정렬할때
- 조건값에 음수를 붙이면 내림차순이다.
'algorithm > 백준' 카테고리의 다른 글
[PYTHON/파이썬] 2563 색종이 (0) | 2023.02.15 |
---|---|
[PYTHON/파이썬] 1764 듣보잡 - Counter/Filter/setdefault (0) | 2023.02.15 |
[PYTHON/파이썬] 2738 행렬 덧셈 (0) | 2023.02.09 |
[PYTHON/파이썬] 10250 ACM호텔 - zfill() 0으로 자릿수 채우는 법 (0) | 2023.02.09 |
[PYTHON/파이썬] 4949 균형잡힌 세상 - ()[]{}<> (0) | 2023.02.09 |
댓글