Baekjoon/IM Level

[백준] 11399 ATM (실버4)

hellosonic 2023. 3. 15. 12:03

문제요약

나의 코드 및 설명

  • 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하기 위해서는 우선, 입력한 시간들을 오름차순 정렬해주어야 한다.
  • for문을 통해 한 사람이 돈을 인출하는데 필요한 시간을 time_temp 변수에 저장하고, 최종 출력할 result 변수에 누적해서 시간을 더하는 방법으로 문제를 해결하였다. 
n = int(input())
time = list(map(int, input().split()))

time.sort()

result = 0
time_temp = 0
for i in range(n):
    time_temp += time[i]
    result += time_temp

print(result)

다른 코드 및 설명

  • 리스트 슬라이싱을 통해, 변수를 하나만 사용하여 문제 해결이 가능하다. (시간 효율은 그 전의 코드가 더 좋다.)
n = int(input())
time = list(map(int, input().split()))

time.sort()

result = 0
for i in range(1,n+1):
    result += sum(time[0:i])

print(result)

피드백

실버 난이도이지만, 간단하게 풀 수 있었다. 오름차순으로 정렬한 후 문제를 해결하는 것이 핵심 포인트. 
두 가지 코드를 모두 작성한 만큼 다양한 해결 방법이 있다는 것을 항상 염두에 두자. 리스트 슬라이싱은 참 유용한 것 같다.