jyamethyst21 님의 블로그

백준 28281번 - '선물' (PYTHON 풀이) 본문

CODING 💻

백준 28281번 - '선물' (PYTHON 풀이)

jyamethyst21 2026. 2. 26. 09:27

문제:

 

입력받은 날들에 대해 이틀 연속 붙어있는 날을 기준으로 X개의 양말을 구매한다고 할 때, 이틀씩 붙어있는 날들의 모든 경우의 수를 계산해서 최소 비용을 구하는 문제이다.

문제 설명보다는 예시를 보면 바로 이해가 될 것이다.

 

풀이:

N, X = map(int,input().split())

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

result = float('inf')
for i in range(len(day)-1):
    plus = day[i]*X + day[i+1]*X
    result = min(result, plus)

print(result)

N, X를 입력받고, 날마다 달라지는 금액을 입력받아 day에 넣는다.

그 후 최초 비교를 위해 무한대 값인 inf 값을 result에 넣는다. 엄청 큰 값을 일부러 넣은건데 그 이유는 입력받은 날들을 비교해야하기 때문에 강제로 첫째날, 둘째날 계산값을 넣기 위함이다.

이후 for문을 통해 모든 기준 날+(기준날+1)에서의 값들을 계산해서 값 비교를 위해 plus 변수를 생성하였다. 그리고 최소 비용을 찾는 것이므로 min 함수를 활용해서 result, plus 값을 비교해서 result에 더 적은 값을 넣고 이를 출력한다.