파이썬/코딩 테스트

[Do-it! 코딩 테스트-기초편] 018. ATM 인출 시간 계산하기

caramel-bottle 2023. 11. 3.

문제

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

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net


접근

데이터 크기: 1,000

시간 제한: 1초

 

데이터의 크기가 크지 않기 때문에 O(N^2) 정렬을 사용해도 됨.

여기서는 삽입 정렬을 사용


코드

import sys

N = int(input())
li = list(map(int, sys.stdin.readline().split(' ')))
total = 0
for i in range(1, N):
    for j in range(i, 0, -1):
        if li[j] < li[j - 1]:
            li[j - 1], li[j] = li[j], li[j - 1]

for i in range(N):
    total += li[i] * (N - i)
print(total)

설명

시간의 합의 최소값을 구하려면 오름차순 정렬을 해야한다.

 

인접한 값만을 비교하여 정렬하는 과정을 리스트 각 인덱스마다 실행

 

정렬이 완료된 리스트의 총 합을 구한다.

 

댓글