🌞Algorithm/🔥Baekjoon

[Baekjoon] 5059_Shopaholic

뿌야._. 2026. 3. 9. 11:47
문제(출처: https://www.acmicpc.net/problem/5059)

< Shopaholic >

 

문제 풀이 

 

할인을 가장 많이 받기 위해서는 물건을 내림차순으로 정렬 후 3개씩 사면된다. 

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

public class _5059_ { // Shopaholic

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int t = Integer.parseInt(bf.readLine());

		for (int i = 0; i < t; i++) {
			int n = Integer.parseInt(bf.readLine());

			Integer arr[] = new Integer[n];

			st = new StringTokenizer(bf.readLine());
			for (int j = 0; j < n; j++) {
				arr[j] = Integer.parseInt(st.nextToken());
			}

			Arrays.sort(arr, Collections.reverseOrder());

			int sum = 0;
			for (int j = 0; j < n; j += 3) {
				if (j + 2 >= n) {
					break;
				}
				sum += arr[j + 2];
			}

			bw.write(sum + "\n");
		}
		bw.flush();
	}
}
변수)
t : 테스트 케이스 개수
n : 물건의 개수
arr : 물건 가격
sum : 최대 할인 금액

 

테스트 케이스 개수를 입력받는다. 테스트 케이스 수만큼 다음 과정을 반복한다.

 

1) 물건의 개수 입력

2) 물건의 개수만큼 물건 가격을 입력받아 배열에 저장

3) 내림차순으로 정렬

4) 배열을 3개씩 탐색하며 가장 작은 값을 sum에 더해줌

5) sum 출력 



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 17550_Inquiry I  (0) 2026.03.04
[Baekjoon] 15465_Milk Measurement  (0) 2026.03.03
[Baekjoon] 6119_Cow Line  (0) 2026.02.27
[Baekjoon] 21236_Comfortable Cows  (0) 2026.02.26
[Baekjoon] 11969_Breed Counting  (0) 2026.02.24