Story of CowHacker

백준 2217번 로프 본문

공부/백준

백준 2217번 로프

Cow_Hacker 2020. 9. 3. 09:49
728x90

 

백준 2217번 로프를 풀어봤다.

 

이번 문제를 문제 이해를 하는데 조금 시간이 걸렸다.

 

무슨 말인지 싶었다.

 

예를 하나 보고는 바로 이해됐다.

 

 

 

 

 

예)

 

로프 개수 : 5

로프가 버틸 수 있는 최대 중량 : 20 10 30 40 5

 

이런 상황일 때

 

[ 20, 10, 30, 40, 5 ]

 

첫 번째 로프 최대 중량 20인 로프는 앞의 로프 2개를 추가적으로 쓸수 있다.

( 최대중량 10과 5인 로프는 중량 20을 들 수 없다. )

-> 20 * 3 = 60

두 번째 로프 최대 중량 10인 로프는 남은 로프 중 3개를 추가적으로 쓸 수 있다.

-> 10 * 4 = 40

세 번째 로프 최대 중량 30인 로프는 남은 로프 중 1개를 추가적으로 쓸 수 있다.

-> 30 * 2 = 60

네 번째 로프 최대 중량 40인 로프는 남은 로프 중 추가적으로 쓸 수 있는것이 없다.

-> 40

다섯 번째 로프 최대중량 5인 로프는 남은 로프중 4개를 추가적으로 쓸수 있다.

-> 5 * 5 = 25

 

이제 여기서 최대한으로 들 수 있는 중량은 세 번째 로프를 사용한 60이다.

 

 

 

N = int(input())                      # 로프갯수다.
       
lopelist = []                         # 로프 종류를 담을 리스트다.
wlist = []                            # 무게 종류를 담을 리스트다.
f = 0                                 # 로프 종류 리스트 인덱스설정 값이다.

for _ in range(N):                    # 로프 갯수만큼 for문을 돌린다.
    lope = map(int, input().split())  # 로프 종류를 엔터 기준으로 입력 받는다.
    for _ in lope:                    # 로프 종류를 for문에 하나씩 넣는다.
        lopelist.append(_)            # for문에 받은 로프 종류를 리스트에 담는다. 

lopelist = sorted(lopelist)           # 로프 종류 리스트를 오름차순으로 정렬한다.

while True:                           # while문의 무한루프다.
    w = lopelist[f] * N               # 로프 종류 리스트의 인덱스와 로프 갯수를 곱한다.
    N -= 1                            # 로프 갯수를 1개 줄인다.
    f += 1                            # 로프 종류 리스트 인덱스 설정값을 1개 더한다.
    wlist.append(w)                   # 무개 종류를 리스트에 담는다.
    if N == 0:                        # 로프 갯수가 0일 때 진입한다.
        wlist = sorted(wlist)         # 무게 종류 리스트를 오름차순으로 정렬한다.
        print(wlist[-1])              # 가장 무거운 무게를 출력한다.
        break                         # while문의 무한루프를 종료한다.
728x90

'공부 > 백준' 카테고리의 다른 글

백준 10162번 전자레인지  (0) 2020.09.08
백준 1541번 잃어버린 괄호  (0) 2020.09.08
백준 5585번 거스름돈  (0) 2020.09.03
백준 11047번 동전0  (0) 2020.08.31
백준 11399번 ATM  (0) 2020.08.31
Comments