728x90
SMALL
info = {}
for _ in range(int(input())):
time, name = input().split()
hour, minute = map(int, time.split(':'))
total_minute = hour * 60 + minute
info[name] = info.get(name, 0) + total_minute
for name in info:
if info[name] <= 100:
info[name] = 10
continue
else:
info[name] -= 100
if info[name] % 50 == 0:
info[name] = (info[name] // 50) * 3 + 10
else:
info[name] = (info[name] // 50 + 1) * 3 + 10
for k, v in sorted(info.items(), key=lambda x: (-x[1], x[0])):
print(k, v)
- get() 함수에 default 값을 부여하여 dict를 초기화하는 방법은 정말 유용한 것 같습니다. ㅎㅎ
- 다른 것들은 무리가 없었는데 info를 정렬할 때 요금은 내림차순으로, 이름은 오름차순으로 정렬을 해야했기에 고민을 꽤나 했습니다. 만약, 정수형인 value가 아니라 문자열 형태의 값이라면 이는 어떻게 처리해야할지도 고민이 되었던 것 같아요.
- 결과적으로 위 경우에 ord()를 사용하여 정렬하는 방법을 고안해보았습니다. 더 좋은 방법이 있다면 댓글로 알려주세요!
728x90
LIST
'알고리즘 문제 > 랜덤 마라톤 (solved.ac)' 카테고리의 다른 글
🥈 3060번: 욕심쟁이 돼지 (2) | 2024.10.07 |
---|---|
🥈 5568번: 카드 놓기 (2) | 2024.09.13 |
🥈 2740번: 행렬 곱셈 (2) | 2024.08.20 |
🥉 27961번: 고양이는 많을수록 좋다 (0) | 2024.08.19 |
🥈 27648번: 증가 배열 만들기 (0) | 2024.08.08 |