걸림돌
- 모든 사람들이 돈을 뽑아야한다는 전제 하에 마지막 사람 까지 돈을 뽑는 시간을 최소로 하는 알고리즘을 짜는데 어려움을 겪음
- 문제를 보면 간단하게 해결가능함. 문제를 잘 읽지 않아서 생긴 문제였음. 방법은 즉 시간이 적게 걸리는 순으로 줄을 세우면 됨
코드
n = int(input())
time = list(map(int, input().split()))
time.sort() # 최단시간을 구하기 위해 시간이 작은 순으로 정렬함
total_time = 0
for i in range(1, n+1):
total_time += sum(time[0:i]) # sum(time[0:i])는 0번째 부터 i번째 까지 더한다는 뜻임.
print(total_time)
각 사람들의 시간을 `time`변수에 리스트 형태로 입력받게끔 했다.
그리고 마지막 사람 까지 돈을 뽑는게 걸리는 시간을 최단시간으로 만들기 위해 `sort()`함수를 사용하여 시간이 작은 순으로 정렬했다
`sum(time[0:i])` time을 0번째 부터 i번째 까지 더하는 코드방식을 이용하여 문제를 쉽게 해결했다.
알게된 점
- total_time += sum(time[0:i]) 이 코드를 통해 ‘time’ 리스트 안에 요소들을 0번째 부터 i번째 까지 모두 더할 수 있다는 것을 알게되었다.
- 위 문제 같은 유형에서 첫번째 사람부터 마지막 사람 까지 돈을 뽑는데 걸리는 시간을 최단시간으로 만들기 위해서는 작은 순으로 정렬해야 한다는 것을 알게되었다.
'BeakJoon > Python' 카테고리의 다른 글
[Python] 백준 #5622번: 다이얼 (0) | 2023.12.01 |
---|---|
[Python] 백준 #10773 : 제로 (0) | 2023.11.28 |
[Python] 백준 #2839번 : 설탕 배달 (1) | 2023.11.28 |
[Python] 백준 #1271번 : 엄청난 부자2 (0) | 2023.11.11 |
[Python] 백준 #2751번 : 수 정렬하기 2 (1) | 2023.11.11 |