본문 바로가기
Algorithm

[백준] 11399번: ATM(그리디 알고리즘) - Python

by Baest 2022. 3. 3.

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

 

11399번: ATM

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

www.acmicpc.net

 

 

[문제유형]

- 그리디 알고리즘

 

 

[문제]

 

[제출한 코드 및 풀이]

1차시도(사유: 오답)

- 아래와 같이 코드 구현 후 출력은 제대로 됐는데 오답처리가 되었다.

- 뭔가 입력 받는 과정에서 오답 처리가 된 것 같은 느낌..

n = int(input())
seq = input().split(" ")
seq.sort()

sum = 0
for i in range(1, len(seq)+1):
    for j in range(1, i+1):
        sum += int(seq[j-1])
        // print(f"j: {seq[j-1]}")

print(sum)

 

2차시도(정답)

- 입력 부분을 map으로 받으면서 list로 만들도록 수정하였더니 통과되었다.

n = int(input())
seq = list(map(int, input().split()))
seq.sort()  // 오름차순 정렬

sum = 0
for i in range(1, len(seq)+1): // P1일 때 1번(1), P2일 때 2번(1+2) 이런식으로 누적
    for j in range(1, i+1):
        sum += seq[j-1]
        // print(f"j: {seq[j-1]}")

print(sum)

 

풀이를 아래와 같이 이미지로 제작해보았음. 시간 순서대로 정렬해 두고 작은 숫자부터 자리수만큼 누적해서 더해주면 끝!

1, 1+2 작업이 for문 안에서 진행