컴퓨터 공부/📚 Baekjoon(백준)

[백준/알고리즘/python/java] 11399번 - ATM

letzgorats 2021. 2. 2. 14:45

이미지를 누르면 문제링크를 보실 수 있습니다.
[11399번] - ATM

최소값을 구하려면 우선, 시간을 오름차순으로 나열하는 것이 관건이다.

 

처음에는 map 함수를 통해서 여러개의 값을 받는 것을 list화 시켜서 정렬(sort)을 해야 하는데,
사용자에게 여러개의 값을 입력받을 때 number 값을 이용하는 줄 알고 애를 먹었다.

자바같은 언어에서는 보통 number 같은 변수를 입력 받아 for문을 돌면서 배열에 값을 넣어주기 때문이다.


하지만, 사용자에게 입력 받은 number는 나중에 값을 하나씩 더할 때 사용되는 것이고,
사용자에게 차례로 입력받은 값을 리스트에 넣으려면 그냥 map함수를 list() 해주면 됐다.
그리고 정렬을 할 때는 맨 처음에 애를 먹었던 것이

number = int(input())
time_list = map(int, input().split())
list(time_list)
time_list.sort()

이렇게 따로 했는데, map object 어딘가에서 오류가 발생했다. 애초에 map 함수로 값을 입력받을 때 list 화를 먼저 시켜야 겠다.

 

(최종코드-python)

number = int(input())
time_list = list(map(int, input().split()))
time_list.sort()
min = 0
for i in range(0, number+1):
    for time in time_list[:i]:
        min += time
print(min)

또한, 최종코드에 도달하기 전에 range(number+1) 을 하지 않고 range(number)를 해서 처음에는 값이 다르게 나왔다. time_list[:i] 이므로 마지막 원소값 까지 계산을 하려면, i는 number+1 이어야 한다.

반응형