Coding Test/Sort

[11399] ATM (삽입 정렬 풀이, 그리디)

Karla Ko 2023. 6. 6. 11:30
728x90
 

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()
s=[0]*n  # 합배열

s[0]=a[0]
for i in range(1,n):  # 합배열 만들기
    s[i]=s[i-1]+a[i]
    
total=0
for i in range(0,n):  # 합배열 총합 구하기
    total+=s[i]
print(total)

 

 

삽입정렬 풀이

n=int(input())
a=list(map(int,input().split()))
s=[0]*n  # 합배열

# 삽입정렬
for i in range(1,n):
    insert_point=i
    insert_value=a[i]
    for j in range(i-1,-1,-1):
        if a[j]<a[i]:
            insert_point=j+1
            break
        if j==0:
            insert_point=0
    for j in range(i, insert_point, -1):
        a[j]=a[j-1]
    a[insert_point]=insert_value


s[0]=a[0]
for i in range(n):  # 합배열 만들기
    s[i]=s[i-1]+a[i]

total=0
for i in range(0,n):  # 합배열 총합 구하기
    total+=s[i]
print(total)

 

 

 

728x90