본문 바로가기

백준 write-up/정렬 & 그리디

[백준] 슬라임 합치기 : 14241번 - Python

728x90
반응형

https://www.acmicpc.net/problem/14241

 

14241번: 슬라임 합치기

영선이와 효빈이는 슬라임을 합치는 게임을 하고 있다. 두 사람은 두 슬라임을 골라서 하나로 합쳐야 한다. 게임은 슬라임이 하나 남았을 때 끝난다. 모든 슬라임은 양수 크기를 가지고 있다. 두

www.acmicpc.net

 

 

 

문제의 접근 방법

 

- 어떤 순서로 슬라임을 합쳐도 나오는 값이 똑같다.

 

 

 

내가 막혔던 부분

 

- 리스트의 0번째 요소와 1번째 요소를 더한 값을 그 다음 원소와 더하는 과정 => 코드로 표현하는 것에 어려움을 겪었다.

: 그냥 첫 번째 요소와 두 번째 요소를 더했다면 그 값을 두 번째 요소에 넣어주면 되는 것이었다!

ex) list[1] = list[0] + list[1]

 

 

 

문제 풀이 방법

 

슬라임의 개수(N)와 N개의 슬라임들의 크기를 입력받기 -> 얻을 수 있는 점수를 score변수에 누적해서 더하기(이 때, 가장 첫 번째 요소와 그 다음 요소를 곱한 값을 넣어준다) -> 두 슬라임을 합쳐서(x+y) 만들어진 새로운 슬라임과 그 다음으로 합칠 슬라임을 계산하기 위해 리스트 size의 i번째 요소와 i+1번째 요소를 더한 값을 i+1번째에 넣어주는 방식으로 반복 수행하기 -> 점수의 최댓값 score 출력하기!

 

 

 

소스코드

N = int(input())

size = list(map(int, input().split()))

score = 0
for i in range(len(size)-1):
    score += (size[i] * size[i+1])
    size[i+1] = size[i] + size[i+1]
    
print(score)
728x90
반응형