๋ฌธ์ (์ถ์ฒ: 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๋ฅผ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1120_๋ฌธ์์ด (0) | 2024.06.17 |
---|---|
[Baekjoon] 12887_๊ฒฝ๋ก ๊ฒ์ (0) | 2024.06.14 |
[Baekjoon] 23246_Sport Climbing Combined (0) | 2024.06.12 |
[Baekjoon] 25325_ํ์ ์ธ๊ธฐ๋ ์ธก์ (0) | 2024.06.11 |
[Baekjoon] 15702_์ค๊ฐ๊ณ ์ฌ ์ฑ์ (0) | 2024.06.10 |