문제.
https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
코드.
n = int(input())
a = list(map(int,input().split()))
a.sort()
b = []
for i in range(n):
if i == 0:
c = a[i]
b.append(c)
else:
c = b[i-1] +a[i]
b.append(c)
x = sum(b)
print(x)
입력 값 | 출력 값 |
5 3 1 4 3 2 |
32 |
해석 및 풀이.
★ 이 문제는 임의의 수 N과 N개의 숫자만큼 입력받아 오름차순으로 배열한 뒤 각 위치에 따른 부분합을 구합니다. 그리고 그 부분합의 총 합을 구하여 출력하는 프로그램을 만드는 문제입니다.
이때 sort(reverse=True) 함수를 쓰지 않을것을 권장하는데 저는 주저없이 사용했다는 점 참고 부탁드립니다.
n = int(input())
a = list(map(int,input().split()))
a.sort()
b = []
먼저 N개의 임의의 숫자를 받을 수 있는 input() 함수를 각각 만들어 줍니다. 이후 임의로 받은 숫자들을 오름차순 정렬을 해주고 부분합을 구해서 넣어줄 리스트 b 를 만들어 줍니다.
for i in range(n):
if i == 0:
c = a[i]
b.append(c)
else:
c = b[i-1] +a[i]
b.append(c)
이후 반복문을 이용하여 부분합을 구해주는데 리스트 a 의 [0]번째 인덱스는 부분합이 그 자체이기 때문에 바로 리스트 b 에 넣어주고 이후에는 부분합에 리스트 a 의 그 다음 인덱스 수를 더해 리스트 b 에 넣어줍니다.
x = sum(b)
print(x)
마지막으로 리스트 b 에 입력된 값을 sum() 함수를 이용해 총합을 구한 뒤 print로 출력해줍니다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
Do it 알고리즘 코딩 테스트 - 17번 (0) | 2023.11.03 |
---|---|
Do it 알고리즘 코딩 테스트 - 16번 (1) | 2023.11.03 |
Do it 알고리즘 코딩 테스트 - 15번 (0) | 2023.11.03 |
Do it 알고리즘 코딩 테스트 - 14번 (0) | 2023.11.03 |
Do it 알고리즘 코딩 테스트 - 13번 (0) | 2023.11.03 |