728x90
반응형
문제
https://www.acmicpc.net/problem/15903
해설
이 문제는 다음과 같은 2가지 과정을 통해 카드 합체를 하는 문제이다.
- x번 카드와 y번 카드를 골라 그 두 장에 쓰여진 수를 더한 값을 계산한다. (x ≠ y)
- 계산한 값을 x번 카드와 y번 카드 두 장 모두에 덮어 쓴다.
위와 같은 과정을 m번 거쳤을 때 모든 카드의 합이 최소가 되게 하는 것이 목표이므로,
매번 고르는 x번 카드와 y번 카드는 가장 작은 두 카드가 되야한다.
sort() 함수를 이용해 반복문이 시작할 때 마다, 오름차순 정렬을 해주면
리스트의 0번, 1번 카드가 매번 가장 작은 두 카드가 된다.
두 카드의 값을 더해 새로운 변수(temp)에 넣어주고
두 카드를 temp 값으로 변경해주면 1, 2번 과정을 모두 거치게 된다.
반복문이 종료되고 나면 리스트에 있는 값을 모두 더해주면 된다.
코드
-파이썬
#백준 15903(카드 합체 놀이)
n, m = map(int, input().split()) #카드 개수, 합체 횟수
card = list(map(int, input().split())) #카드
for i in range(m):
card.sort()
temp = card[0] + card[1]
card[0] = temp
card[1] = temp
print(sum(card))
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬] BOJ_2720(세탁소 사장 동혁) (0) | 2021.02.23 |
---|---|
[파이썬, 자바] BOJ_1343(폴리오미노) (0) | 2021.02.19 |
[파이썬] BOJ_11399(ATM) (0) | 2021.02.16 |
[파이썬, 자바] BOJ_20363(당근 키우기) (0) | 2021.02.15 |
[파이썬] BOJ_1758(알바생 강호) (0) | 2021.02.12 |