๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 29891_์ฒดํฌํฌ์ธํŠธ ๋‹ฌ๋ฆฌ๊ธฐ

๋ฟŒ์•ผ._. 2024. 6. 13. 11:29

Silver IV

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/29891)

< ์ฒดํฌํฌ์ธํŠธ ๋‹ฌ๋ฆฌ๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

์ฒดํฌํฌ์ธํŠธ ์œ„์น˜๋ฅผ ์Œ์ˆ˜์™€ ์–‘์ˆ˜๋กœ ๋‚˜๋ˆ ์„œ ๊ณ„์‚ฐํ•œ๋‹ค. ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ฒดํฌํฌ์ธํŠธ ์œ„์น˜๋ถ€ํ„ฐ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class _29891_ { // ์ฒดํฌํฌ์ธํŠธ ๋‹ฌ๋ฆฌ๊ธฐ

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

		int n = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());

		ArrayList<Integer> list1 = new ArrayList<>();
		ArrayList<Integer> list2 = new ArrayList<>();
		for (int i = 0; i < n; i++) {
			int num = Integer.parseInt(bf.readLine());
			if (num < 0) {
				list1.add(num);
			} else {
				list2.add(num);
			}
		}

		Collections.sort(list1);
		Collections.sort(list2, Collections.reverseOrder());

		long result = 0;
		int cnt = 0;
		for (int i = 0; i < list1.size(); i++) {
			if (cnt == 0) {
				result += Math.abs(list1.get(i)) * 2;
				cnt += 1;
			} else if (cnt < k) {
				cnt += 1;
			}

			if (cnt == k) {
				cnt = 0;
			}
		}

		cnt=0;
		for (int i = 0; i < list2.size(); i++) {
			if (cnt == 0) {
				result += list2.get(i) * 2;
				cnt += 1;
			} else if (cnt < k) {
				cnt += 1;
			}

			if (cnt == k) {
				cnt = 0;
			}
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
n, k : ์ฒดํฌํฌ์ธํŠธ ๊ฐœ์ˆ˜, ํ•œ ๋ฒˆ์— ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฒดํฌํฌ์ธํŠธ ๊ฐœ์ˆ˜
list1, list2 : ์Œ์ˆ˜, ์–‘์ˆ˜ ์ฒดํฌํฌ์ธํŠธ ์œ„์น˜
result : ์ด๋™ ๊ฑฐ๋ฆฌ
cnt : ์ฒดํฌํ•œ ์ฒดํฌํฌ์ธํŠธ ๊ฐœ์ˆ˜

 

์ฒดํฌํฌ์ธํŠธ ๊ฐœ์ˆ˜์™€ ํ•œ ๋ฒˆ์— ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฒดํฌํฌ์ธํŠธ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ฒดํฌํฌ์ธํŠธ ์œ„์น˜๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ์Œ์ˆ˜์™€ ์–‘์ˆ˜๋ฅผ ๋‚˜๋ˆ  ๊ฐ ArrayList์— ์ €์žฅํ•œ๋‹ค. ์Œ์ˆ˜๊ฐ€ ์ €์žฅ๋œ ArrayList๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์–‘์ˆ˜๊ฐ€ ์ €์žฅ๋œ ArrayList๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

๊ฐ๊ฐ ์Œ์ˆ˜์™€ ์–‘์ˆ˜๊ฐ€ ์ €์žฅ๋œ ArrayList๋ฅผ ์ˆœํ™˜ํ•œ๋‹ค. ํ•˜๋‚˜๋„ ์ฒดํฌ๋ฅผ ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ฒดํฌ๋ฅผ ํ•˜๊ณ  result์— ์™•๋ณต ๊ฑฐ๋ฆฌ๋ฅผ ๋”ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ ์ฒดํฌํ•œ ์ ์ด ์žˆ์œผ๋ฉฐ k๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์ฒดํฌ ํ‘œ์‹œ๋งŒ ํ•œ๋‹ค. ์ฒดํฌํ•œ ๊ฐœ์ˆ˜๊ฐ€ k์™€ ์ผ์น˜ํ•˜๋‹ค๋ฉด ํ•œ ๋ฒˆ์— ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋‹คํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ฒดํฌ ๊ฐœ์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.  

 

์ตœ์ข… result๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.