728x90
반응형
BaekJoon BOJ 백준 11399 ATM 문제는 사람의 수, 각 사람이 돈을 인출하는 데 걸리는 시간이 주어졌을 때 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 문제이다.
BaekJoon 11399 ATM 문제 정보
출처
- https://www.acmicpc.net/problem/11399
알고리즘 분류
- 그리디 알고리즘, 정렬 (greedy algorithm, 탐욕법, sorting)
난이도
- 실버 4 / Silver 4
ATM 문제 요약
- 1대밖에 없는 ATM 앞에 N명의 사람들이 줄을 서있다.
- 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는 데 걸리는 시간은 Pi분이다.
- 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는 데 필요한 시간의 합이 달라지게 된다.
- 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우
- [1, 2, 3, 4, 5] 순서로 줄을 선다면, 각 사람이 돈을 인출하는 데 필요한 시간의 합은 3+4+8+11+13 = 39분이 된다.
- 사람의 수 N(1 ≤ N ≤ 1,000), 각 사람이 돈을 인출하는 데 걸리는 시간 Pi(1 ≤ Pi ≤ 1,000)가 주어졌을 때,
- 각 사람이 돈을 인출하는 데 필요한 시간의 합의 최솟값을 구하여 출력한다.
문제 풀이 과정
- 사람의 수 N, 각 사람이 돈을 인출하는 데 걸리는 시간 P를 입력받는다.
- 인출하는데 걸리는 시작이 적게 드는 사람부터 인출하는 경우가 제일 빠른 경우이다.
- 따라서 입력받은 P를 오름차순 정렬한다.
- 그 후 각 사람이 돈을 인출하는 데 걸리는 시간을 모두 합하여 출력한다.
코드 및 설명
- N - 사람의 수
- P - 각 사람이 돈을 인출하는 데 걸리는 시간을 저장한 리스트
- result - 각 사람이 돈을 인출하는데 필요한 시간의 합
- now_sum - 현재 사람이 돈을 인출하는데 필요한 시간
N = int(input())
P = list(map(int, input().split()))
P.sort()
result = 0
# 풀이 1
for i in range(N):
result += sum(P[0:i + 1])
# 풀이 2
# now_sum = 0
# for p in P:
# now_sum += p
# result += now_sum
print(result)
BaekJoon 백준 BOJ 11399 ATM 문제를 파이썬 python으로 풀어보았다. 난이도는 Silver 실버 4이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/BaekJoon] 백준 1026 보물 (Python / 파이썬) (0) | 2022.06.06 |
---|---|
[BOJ/BaekJoon] 백준 11047 동전 0 (Python / 파이썬) (0) | 2022.06.05 |
[BaekJoon] 백준 14889 스타트와 링크 (Python / 파이썬) (0) | 2021.09.19 |
[BaekJoon] 백준 14697 방 배정하기 (Python / 파이썬) (0) | 2021.09.18 |
[BaekJoon] 백준 3040 백설 공주와 일곱 난쟁이 (Python / 파이썬) (0) | 2021.09.17 |
댓글