알고리즘 정복하기!/백준 문제풀이

백준 15903번 Python / Greedy

by seokii 2022. 2. 25.
728x90
반응형

백준 문제풀이 GitHub

https://github.com/Seokii/baekjoon

 

GitHub - Seokii/baekjoon: Daily Commit for Baekjoon

Daily Commit for Baekjoon. Contribute to Seokii/baekjoon development by creating an account on GitHub.

github.com

 

문제 링크

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

 

15903번: 카드 합체 놀이

첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,

www.acmicpc.net

 

풀이

n,m = map(int, input().split())
arr = list(map(int, input().split()))

for _ in range(m):
    arr.sort()
    tmp = arr[0] + arr[1]
    arr[0] = tmp
    arr[1] = tmp

print(sum(arr))

반복 횟수만큼 for문을 진행합니다.

가장 작은 값 2개만 서로 더하기 위해서 리스트의 내용을 오름차순으로 정렬합니다.

정렬을 했기 때문에 앞의 원소 2개만 뽑아서 더하기를 진행하고,

첫 번째와 두 번째 원소를 그 결과값으로 선언합니다.

이후의 반복에서 다시 정렬을 진행하기 때문에 똑같은 과정을 반복합니다.

결과는 배열의 합을 sum()함수로 계산해 출력합니다.

 

 

728x90
반응형

댓글