BOJ 11399. ATM (Python)

2025. 8. 13. 21:26·BOJ

문제

BOJ 11399

 

내가 생각한 풀이

사람의 수와 각 사람이 돈을 인출하는데 걸리는 시간 P_i가 주어질 때, 모든 사람이 돈을 인출하는데 필요한 시간의 최솟값을 출력하는 문제.

 

사람이 줄을 서는 순서에 따라 돈을 인출하는 시간이 달라지게 된다.

인출하는 시간이 짧은 사람부터 인출하는게 유리하다. Why? 앞 사람이 인출하는 시간이 뒷 사람들에게 전부 적용되기 때문

 

즉, 인출하는 시간을 담은 수열 P를 정렬한 후 앞의 값을 뒷의 값에 더해주고 sum함수 실행.

시간복잡도: O(N log N) + O(N-1) == O(N log N)

 

코드 (Python)

import sys
input = sys.stdin.readline

N = int(input().strip())
P = list(map(int, input().split()))
P.sort()
for i in range(N-1):
    P[i+1] += P[i]
print(sum(P))

'BOJ' 카테고리의 다른 글

BOJ 1003. 피보나치 함수 (Python)  (0) 2025.08.14
BOJ 17219. 비밀번호 찾기 (Python)  (0) 2025.08.13
'BOJ' 카테고리의 다른 글
  • BOJ 1003. 피보나치 함수 (Python)
  • BOJ 17219. 비밀번호 찾기 (Python)
rubato.dev
rubato.dev
  • rubato.dev
    rubato.dev
    rubato.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (5) N
      • BOJ (3) N
      • 알고리즘 (0)
      • TIL (2)
      • Project (0)
  • 인기 글

  • 태그

    PYTHON
    CSS
    BOJ
    js
    TIL
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
rubato.dev
BOJ 11399. ATM (Python)
상단으로

티스토리툴바