※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 28281번 문제인 선물이다.
문제는 아래 링크를 확인하자.

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

 

28281번: 선물

연속한 이틀에 걸쳐 하루에 양말을 $X$개씩 구매하는 방법으로, 양말 $2X$개를 사는 데 드는 최소 비용을 출력한다.

www.acmicpc.net

X의 값은 변하지 않으므로, 문제에서 구하는 값을 최소화하기 위해서는 "붙어있는 두 양말가격의 합"을 최소화해야 함을 알 수 있다.

 

양말의 가격을 배열에 저장해두고 반복문을 이용해 인접한 두 값의 합을 전수조사해 "붙어있는 두 양말가격의 합"을 계산하고 문제를 해결하자. 배열을 사용하지 않고 해결하는 풀이 또한 존재하는데, 이를 생각하는 것은 읽는이에게 맡긴다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N, X;
int arr[100000];
int mn = 1000000007;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> X;
	for (int i = 0; i < N; i++) cin >> arr[i];
	N--;
	for (int i = 0; i < N; i++) mn = min(mn, arr[i] + arr[i + 1]);

	cout << mn * X;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 28062 // C++] 준석이의 사탕 사기  (1) 2023.11.24
[BOJ 28061 // C++] 레몬 따기  (0) 2023.11.23
[BOJ 28282 // C++] 운명  (1) 2023.11.21
[BOJ 28283 // C++] 해킹  (1) 2023.11.20
[BOJ 28284 // C++] 스터디 카페  (1) 2023.11.19

+ Recent posts