문제
https://www.acmicpc.net/problem/11399
접근
데이터 크기: 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)
설명
시간의 합의 최소값을 구하려면 오름차순 정렬을 해야한다.
인접한 값만을 비교하여 정렬하는 과정을 리스트 각 인덱스마다 실행
정렬이 완료된 리스트의 총 합을 구한다.
'파이썬 > 코딩 테스트' 카테고리의 다른 글
[Do-it! 코딩 테스트-기초편] 020. 수 정렬하기 2 (1) | 2023.11.03 |
---|---|
[Do-it! 코딩 테스트-기초편] 019. k번째 수 구하기 (0) | 2023.11.03 |
[Do-it! 코딩 테스트-기초편] 017. 내림차순으로 자릿수 정렬하기 (1) | 2023.11.03 |
[Do-it! 코딩 테스트-기초편] 016. 버블 정렬 프로그램 1 - 미해결 (0) | 2023.11.03 |
[Do-it! 코딩 테스트-기초편] 015. 수 정렬하기 1 (0) | 2023.10.30 |
댓글