카테고리 없음

[백준 알고리즘] 2217 - 로프

soom22 2023. 7. 16. 18:33
import sys
N=int(input())
num=[]
lope=[]

for i in range(N):
   lope.append(int(input()))

lope.sort(reverse=True)

for j in range(N):
    num.append(lope[j]*(j+1))

print(max(num))

떠올린 접근 방식, 과정

n개의 로프를 크기 순으로 정렬한 후에

for문을 돌려 본인 * n+1-i를 다른 배열에 넣은 후 그중 최대값을 출력한다.

해당 접근 방식에 쓰이는 알고리즘과 판단 사유

접근법의 총 시간복잡도

O(n)이 아닐까 싶다.

(에러 오류가 발생했다면) 해결 과정

더보기

오류코드

import sys
N=int(input())
num=[]
lope=[]

for i in range(N):
   lope=list(map(int,input().split()))

lope.sort()

for i in range(N):
    num[i]=lope[i]*(N-i+1)

print(max(num))

 

for문으로 배열에 넣으려니깐 인덱스 에러가 나서 배열을 append로 추가했고

크기순 정렬을 반대로 뒤집은 후 j+1을 주었다.

개선 방법