알고리즘

[백준] 11399 (탐욕법)

u0jin 2020. 8. 22. 21:40

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

 

11399번: ATM

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

www.acmicpc.net

 

# 사람의 수 입력 받음 
n = int(input())

# 각 사람이 돈을 인출하는데 걸리는 시간 
time = list(map(int, input().split()))

# 오름차순으로 정렬함 
time.sort()

# 소요된 시간을 저장할 리스트
s = []

# 소요된 시간을 저장할 변수
result = 0

for i in time:
    result += i
    s.append(result)

print(sum(s))

 

 

그냥 간단하게 소요된 시간을 모두 합했을때, 최솟값을 구하라고 요구하였으니,

우선 오름차순으로 정렬할 필요가있다고 생각하였다.

그래야 모두 더했을때 최솟값이 나오기때문에 일단 정렬을 하고,

각 사람마다 걸리는 시간을 하나의 리스트 안에 저장한후, 

모든 요소를 더하여 출력하도록 하였다.

 

결과값

 

비슷한 방법으로 C언어로 작성하였을때,

파이썬보다 훨씬 코드는 길지만, 시간과 메모리 사용량은 적다는것을 알수 있었다.

메모리 / 시간

 

근데 난 파이썬도 좀 익숙해져야할것같다.

익숙한건 C나 C++ 이지만 사실 코딩테스트를 준비할때 파이썬이 훨씬 유리하다고 생각한다.