Tags
- BOJ
- SpringBoot
- Dynamic Programming
- ๊ทธ๋ํ ์ด๋ก
- ๊ทธ๋ํ ํ์
- CodingTest
- DP
- ๊ตฌํ
- BFS
- Brute Force Algorithm
- ์๋ฃ๊ตฌ์กฐ
- ์ํ
- LV2
- ๋ฌธ์์ด
- queue
- stack
- sort
- ๋๋น ์ฐ์ ํ์
- ๋ฐฑํธ๋ํน
- ์ ์๋ก
- ๊ต์ฌ
- PGM
- Study
- Python
- dfs
- ๊น์ด ์ฐ์ ํ์
- ์๋ฎฌ๋ ์ด์
- Java
- greedy
- ์ ๋ ฌ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_25945 : ์ปจํ ์ด๋ ์ฌ๋ฐฐ์น ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ด m๊ฐ์ ์ปจํ ์ด๋๊ฐ n๊ฐ์ ์นธ์ ๋๋์ด ์์ฌ์ ธ ์๋ค.
- n๊ฐ์ ๊ฐ ์นธ์ ์ปจํ ์ด๋ ๋์ด๊ฐ 1์ดํ๊ฐ ๋๋๋ก ์ฌ๋ฐฐ์นํ ๋, ์ต์ ์ด๋ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ์ปจํ ์ด๋์ ๋์ด๋ฅผ ํํํ ํ๋ ๋ฌธ์ ์ด๋ค.
- ๊ฐ์ฅ ๋จผ์ ์ ๋ ฌ์ n๋ฒ ์ํํด์ ์ต๋๊ฐ์ -1 ์ต์๊ฐ์ +1 ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค
- n์ด ์ต๋ 10๋ง์ด๋ฏ๋ก, ์๊ฐ ๋ณต์ก๋๋ O(n^2logn) ์ผ๋ก 1์ด๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ค.
- ์ต๋ํ, ์ต์ํ ๋ ๊ฐ์ง ์ฐ์ ์์ ํ๋ก ์ต๋๊ฐ๊ณผ ์ต์๊ฐ๋ง ๋น ๋ฅด๊ฒ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ์ด ๋ฌธ์ ์์๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋๊ฒ ๋๋ค.
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํจ์จ์ ์ผ๋ก ๊ณ์ฐํด์ผํ๋ค.
- n๊ฐ์ ๊ฐ ์นธ์ ์ปจํ ์ด๋๋ ๊ฒฐ๊ตญ ํ๊ท (m/n)์ ์๋ ดํ๊ฒ ๋๋ค.
- ์ฌ๊ธฐ์ ๋์ด์ฐจ๊ฐ 1์ดํ์ธ ์ด์ ๊ฐ ๋์ค๋๋ฐ, ํ๊ท ์ ์๋ ดํ ๋ ๋ช ๊ฐ์ ์นธ์ ํ๊ท +1์ ๊ฐ์ ๊ฐ์ง๋ค.(m%n ๊ฐ)
- ์ฌ๊ธฐ์ ์ ๋ ฌ์ด ํ์ํ๋ฐ, ํ๊ท ๋ณด๋ค ์์ ๋์ด์ ์นธ์์ ํ๊ท +1 ๊น์ง ๋๋ฆฌ๋ ๊ฒ์ด ์๋
ํ๊ท ๋ณด๋ค ํฐ ๋์ด์ ์นธ์์ ํ๊ท +1 ๊น์ง ๋ด๋ ค์ผ ํ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ ๋ ฌ์ด ํ์ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Integer[] containers = new Integer[n];
long sum = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
sum += containers[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(containers, Collections.reverseOrder());
int avg = (int) (sum / n);
int remainder = (int) (sum % n);
int[] target = new int[n];
for (int i = 0; i < n; i++) {
target[i] = avg + (i < remainder ? 1 : 0);
}
long moveCnt = 0;
for (int i = 0; i < n; i++) {
if (containers[i] > target[i]) {
moveCnt += containers[i] - target[i];
}
}
bw.write(Long.toString(moveCnt));
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- n๊ฐ์ ์นธ์ ์ปจํ ์ด๋ ์ ๋ณด๋ฅผ Integer ๋ฐฐ์ด containers์ ์ ์ฅํ๊ณ , ์ดํฉ์ longํ ๋ณ์ sum์ ๋์ ํ๋ค.
- containers๋ฅผ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ค.
- ์๋ ดํ ํ๊ท avg๋ sum/n, ํ๊ท +1์ ๊ฐ์์ธ remainder๋ sum%n์ผ๋ก ๊ณ์ฐํ๋ค.
- containers ๋ฐฐ์ด๊ณผ ๋งค์นญ ์ํฌ int๋ฐฐ์ด target์ remainder๋งํผ avg+1, ๋๋จธ์ง๋ agv ๊ฐ์ ๋ฃ๋๋ค.
- n๊ฐ์ ์นธ์ ํ์ธํด์ target์ ๊ฐ์ด ๋ ํฐ ๊ฒฝ์ฐ, ๊ทธ ์ฐจ์ด๋งํผ moveCnt์ ๋์ ํ๋ค.
- target๋ณด๋ค ์์ ๊ฒฝ์ฐ๋ ์ค๋ณต์ด๋ฏ๋ก ์นด์ดํธํ์ง ์๋๋ค.
- moveCnt๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ฒ์์ 2๊ฐ์ ์ฐ์ ์์ ํ๋ก ์ต๋ํ, ์ต์ํ์ ํตํด ์ต๋๊ฐ, ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ๊ตฌํ๋ ๋ฐฉ์์ผ๋ก ํ์ดํ๋๋ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค.
- ์๊ฐ ๋ณต์ก๋ ์์ผ๋ก๋ O(nlogn)์ผ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒ ๊ฐ์๋๋ฐ, ์๋ง ๊ทธ๋ฆฌ๋ ํ์ด๋ฅผ ์๋ํ ๋ฌธ์ ์ฌ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ ๊ฒ ๊ฐ๋ค.
- ์์ฃผ ๋ฑ์ฅํ ๊ฒ ๊ฐ์ ์ ์ฉํ ๊ทธ๋ฆฌ๋ ์ ํ์ธ ๊ฒ ๊ฐ์์ ์ ๊ธฐ์ตํด ๋ ์๊ฐ์ด๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.3 : ๊ณต ์ด๋ ์๋ฎฌ๋ ์ด์ (0) | 2024.08.02 |
---|---|
BOJ_24042 : ํก๋จ๋ณด๋ (0) | 2024.08.01 |
BOJ_4179 : ๋ถ! (0) | 2024.06.11 |
BOJ_1937 : ์์ฌ์์ด ํ๋ค (0) | 2024.06.10 |
BOJ_2146 : ๋ค๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2024.05.29 |