SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
1. ๋ฌธ์ ์์ฝ
N๊ฐ์ ๋๋ฌด๊ฐ ์๊ณ ๋ชจ๋ ๋๋ฌด์ ํค๊ฐ ์ฒ์ ๊ฐ์ฅ ํค ํฐ ๋๋ฌด์ ๊ฐ์์ง๋๋ก ํ๋ ์ต์ ์ผ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
ํ์ ์ผ์ 1๋งํผ, ์ง์ ์ผ์ 2๋งํผ ์๋ผ๋ฉฐ ํ๋ฃจ์ ์๋ผ์ง ์์ ์๋ ์๋ค.
2. ํ์ด
๊ทธ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค.
์ ๋ ฅ๋ฐ์ ๋ ๊ฐ์ฅ ๋์ ๋๋ฌด ํค๋ฅผ Math.max๋ก ๊ฐฑ์ ํ๋ฉด์ ๊ตฌํด์ค๋ค.
์ฒ์์๋ max์ ๊ฐ๊ฐ ๋๋ฌด์์ ์ฐจ์ด๋ฅผ ๋ชจ๋ ๋ํด์ ์ง์ ํ ์์ ๋ค์ด๊ฐ ์์๋ ๋งํผ 2๋ฅผ ๋ฃ์ด์ฃผ๊ณ ํ์๋ฉด ํ์ ํ์ 1์ ํ๋ ๋ฃ์ด์ฃผ๊ณ ์์ํ๋ค. ์ด๋ฌ๋ฉด ์ง์ํ์๋ 2 ์ฌ๋ฌ ๊ฐ, ํ์ ํ์๋ 1 ํ๋๊ฐ ๋ค์ด๊ฐ๋ค.
์ง์ ํ ์์ ๋ค์ด์๋ 2๋ฅผ poll ํ๊ณ ํ์ ํ์ 1์ ๋ ๋ฒ offer ํด์ค์ ๋ฐ๋ณตํ๋ฉด์
ํ์ ํ ์ฌ์ด์ฆ๊ฐ ์ง์ ํ ์ฌ์ด์ฆ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ง๋ฉด ๋ฐ๋ณต์ ๋ฉ์ถ๋ค.
ํ์ ํ ์ฌ์ด์ฆ๋ ํ์ ์ผ, ์ง์ ํ ์ฌ์ด์ฆ๋ ์ง์ ์ผ์ ์๋ฏธํ๋ค.
๊ทธ๋์ (์ง์ ํ์ ์ฌ์ด์ฆ + ํ์ ํ์ ์ฌ์ด์ฆ)๋ฅผ ๋ต์ผ๋ก ๊ตฌํ๋ค.
๊ทผ๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋๋ฌด๊ฐ ๋์ด 1์ฉ ๋จ์์ ๋, ์ง์์ผ์ 2๊ฐ ๋ํด์ง๋ฏ๋ก ์ง์ ์ผ์๋ ์ฌ์ด์ผ ํ๋๋ฐ
์ด ์กฐ๊ฑด์ ๊ณ ๋ คํ์ง ์์๋ค. ๊ทธ๋์ ์ฐจ์ด๋ฅผ ์ ๋ถ ๋ํ๊ณ ์์ํ๋ ๋ฐฉ๋ฒ์ ์๋ชป๋์๋ค.
๊ทธ๋์ ๋ฐ๊พผ ๋ฐฉ๋ฒ์, for๋ฌธ์ผ๋ก ๋๋ฌด ํ๋์ฉ ๋ณผ ๋ ํค๊ฐ ์ง์๋ฉด ์ง์ ํ์ ๋ค์ด๊ฐ ์ ์๋ ๋งํผ 2๋ฅผ ๋ฃ์ด์ฃผ๊ณ ํ์๋ฉด ํ์ ํ์ 1์ ๋ฃ์ด์คฌ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ง์ ํ์ 2 ์ฌ๋ฌ ๊ฐ, ํ์ ํ์ 1 ์ฌ๋ฌ ๊ฐ๊ฐ ๋ค์ด๊ฐ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก
์ง์ ํ ์์ ๋ค์ด์๋ 2๋ฅผ poll ํ๊ณ ํ์ ํ์ 1์ ๋ ๋ฒ offer ํด์ค์ ๋ฐ๋ณตํ๋ฉด์
ํ์ ํ ์ฌ์ด์ฆ๊ฐ ์ง์ ํ ์ฌ์ด์ฆ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ง๋ฉด ๋ฐ๋ณต์ ๋ฉ์ถ๋ค.
์ถ๊ฐํ ์กฐ๊ฑด์, ์ฒ์๋ถํฐ ํ์ ํ ์ฌ์ด์ฆ๊ฐ ์ง์ ํ ์ฌ์ด์ฆ๋ณด๋ค ํด ๋,
((์ง์ ํ ์ฌ์ด์ฆ * 2) + (๋จ์ ํ์ ํ ์ฌ์ด์ฆ + ๋จ์ ํ์ ํ ์ฌ์ด์ฆ -1)) ์ ๋ต์ผ๋ก ๊ตฌํ๋ค.
๋จ์ ํ์ ํ ์ฌ์ด์ฆ๋ ํ์ ์ผ,
๋จ์ ํ์ ํ ์ฌ์ด์ฆ-1์ ์ฌ์ด๊ฐ๋ ์ง์ ์ผ์ ์๋ฏธํ๋ค.
๋ฌธ์ ํ์ด ๋ฐฉ๋ฒ์ ๊น์ฐgirl์ ๋์์ ๋ฐ์๋ค.
3. ์ฝ๋
package a22_10_25;
import java.util.*;
import java.io.*;
public class SW_14510_๋๋ฌด๋์ด {
static Queue<Integer> even_q, odd_q;
static int N, ans, max;
static int[] tree;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
N = Integer.parseInt(br.readLine());
tree = new int[N];
max = 0;
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
tree[i] = Integer.parseInt(st.nextToken());
max = Math.max(max, tree[i]);
} // ์
๋ ฅ ๋
ans = 0;
solution();
System.out.println("#" + tc + " " + ans);
}
}
static void solution() {
even_q = new ArrayDeque<>();
odd_q = new ArrayDeque<>();
for (int num = 0; num < N; num++) {
if (tree[num] == max) continue;
int n = max - tree[num];
// ์ด๊ธฐํ
for (int i = 0; i < n / 2; i++) {
even_q.offer(2);
}
if (n % 2 != 0) odd_q.offer(1);
}
// ๊ณ์ฐ
if (even_q.size() >= odd_q.size()) {
while (true) {
if (even_q.size() <= odd_q.size()) {
ans = even_q.size() + odd_q.size();
break;
}
even_q.poll();
odd_q.offer(1);
odd_q.offer(1);
}
} else if (even_q.size() < odd_q.size()) {
ans += even_q.size() * 2;
int gap = odd_q.size() - even_q.size();
ans += gap + (gap - 1);
}
}
}
'Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 1949. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ๋ฑ์ฐ๋ก ์กฐ์ฑ - Java (1) | 2022.11.09 |
|---|---|
| [SWEA] 1227. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 7์ผ์ฐจ - ๋ฏธ๋ก2 - Java (0) | 2022.10.27 |
| [SWEA] 2115. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ๋ฒ๊ฟ์ฑ์ทจ - Java (0) | 2022.10.24 |
| [SWEA] 5650. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ํ๋ณผ ๊ฒ์ Java (0) | 2022.10.22 |
| [SWEA] 2112. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ๋ณดํธ ํ๋ฆ - Java (0) | 2022.10.18 |