[BOJ] 11399번 ATM / Python

sangjuneeeee·2024년 8월 7일

문제

https://www.acmicpc.net/problem/11399

풀이

가장 빨리 끝나는 사람부터 처리하게 되면 총 처리 시간이 가장 짧게 되므로 숫자가 가장 적은 것부터 정렬하여 더한 값들을 모두 더하면 된다.

코드

import sys
input = sys.stdin.readline

N = int(input())

p = list(map(int, input().split()))

p.sort()

ans = 0

for i in range(1, N):
    p[i] = p[i-1] + p[i]

for i in p:
    ans += i

print(ans)

다른 문제 풀이

import sys
input = sys.stdin.readline

N = int(input())

p = list(map(int, input().split()))

p.sort()

ans = 0

for i in range(N):
    ans += sum(p[:i+1])

print(ans)

이 코드는 파이썬의 슬라이싱을 이용해서 처음부터 i번째 까지의 합들을 더한 것이라 시간 복잡도가 살짝 증가하여 시간이 살짝 증가하게 된 것을 확인할 수 있다.

profile
지식 쌓아두기 블로그

0개의 댓글