Tags
- BFS
- LV2
- ๋ฌธ์์ด
- ๊ต์ฌ
- queue
- ์ ์๋ก
- Python
- ์๋ฎฌ๋ ์ด์
- ์๋ฃ๊ตฌ์กฐ
- dfs
- stack
- Java
- DP
- ๊น์ด ์ฐ์ ํ์
- sort
- SpringBoot
- ๊ทธ๋ํ ์ด๋ก
- CodingTest
- ๋ฐฑํธ๋ํน
- Brute Force Algorithm
- PGM
- BOJ
- ์ํ
- Dynamic Programming
- Study
- ๊ตฌํ
- greedy
- ๋๋น ์ฐ์ ํ์
- ์ ๋ ฌ
- ๊ทธ๋ํ ํ์
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_27172 : ์ ๋๋๊ธฐ ๊ฒ์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ต๋ 10๋ง๊ฐ์ ์๋ก ๋ค๋ฅธ ์๊ฐ ์ ํ ์นด๋๊ฐ ์๋ค. ์ด๋ ์๋ 1~100๋ง ์ฌ์ด์ ์ ์์ด๋ค.
- ์นด๋๋ค์ ์๋ก ๊ฒฐํฌ๋ฅผ ๋ฒ์ฌ์ ๋๋์ด ๋จ์ด์ง๋ฉด, ๋๋๋ ์๋ +1, ๋๋์ด์ง ์๋ -1 ์ ์ ๋ฐ๋๋ค.
- ๋ชจ๋ ์นด๋๋ค์ ๊ฒฐํฌ์์ผ ์ต์ข ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- N์ด 10๋ง์ด๋ฏ๋ก O(NlogN)๋ก ๋น๊ตํ๋ฉด, 100์ต๋ฒ์ผ๋ก ์ ํ ์๊ฐ์ธ 1์ด๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ค.
- ์๋ผํ ์คํ
๋ค์ค์ ์ฒด๋ฅผ ํ์ฉํด์ ์์๊ฐ ์๋, ์นด๋ ์ซ์์ ๋ฐฐ์ ์ธ๋ฑ์ค๋ง ํ์ธํด์ ๊ฒฐํฌ๋ฅผ ์งํํ๋ ๋ฐฉ์์ผ๋ก ํ์ดํ๋ฉด ๋๋ค.
- ์ด๋, ํ์ฌ ๊ฒ์์ ๋ฑ์ฅํ ์นด๋ ๋ฒํธ์ธ์ง ํ์ธ์ด ํ์ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] cards = new int[N];
boolean[] isNum = new boolean[1_000_001];
int max = -1;
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
cards[i] = Integer.parseInt(st.nextToken());
max = Math.max(cards[i], max);
isNum[cards[i]] = true;
}
int[] points = new int[max + 1];
// ์ ๋๋๊ธฐ ๊ฒ์
for (int i = 0; i < N; i++) {
for (int j = 2; cards[i] * j <= max; j++) {
if (isNum[cards[i] * j]) {
points[cards[i]]++;
points[cards[i] * j]--;
}
}
}
// ์ถ๋ ฅ
for (int i = 0; i < N; i++) {
sb.append(points[cards[i]]).append(' ');
}
bw.write(sb.toString());
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- N๊ฐ์ ์นด๋ ์ซ์๋ฅผ ๋ด์ int๋ฐฐ์ด cards๊ฐ ์๋ค.
- ํ์ฌ ๊ฒ์์ ๋ฑ์ฅํ ์นด๋์ธ์ง ํ์ธํ๊ธฐ ์ํ boolean ๋ฐฐ์ด isNum์ ์นด๋ ์ธ๋ฑ์ค์ ๋ฐ๋ผ true๋ฅผ ์ ์ฅํ๊ณ , ๋ถํ์ํ ๊ณ์ฐ์ ์ค์ด๊ณ ์ ์ต๋๊ฐ์ max์ ์ ์ฅํ๊ธฐ๋ ํ๋ค.
- ํ ์นด๋๋ฅผ max๊น์ง ๋ฐฐ์ ํ์ธ์ผ๋ก ์ ๋๋๊ธฐ ๊ฒ์์ ์งํํ๋ค.
- ๋ฐฐ์๋ก ๋์จ ์ธ๋ฑ์ค์ ๋ฒํธ๊ฐ ํ์ฌ ๊ฒ์์ ๋ฑ์ฅํ ์นด๋ ๋ฒํธ์ด๋ฉด, ๋๋์ด ๋จ์ด์ง๋ ์๋ผ๋ ๊ฒ์ด๋ฏ๋ก ์ ์๋ฅผ ๊ณ์ฐํ๋ค.
- ์นด๋ ๋ฒํธ์ ๋ฐ๋ผ ์ ์ ๋ฐฐ์ด points์ ์ธ๋ฑ์ค์ ์ ๊ทผํด ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ฒ์์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ ๊ฒ์์ ์์์ง๋ง, ํน์ ์ฐ์ฐ์ด ๊ทธ๋ ๊ฒ ๋ฌด๊ฒ์ง ์์์ ๊ด์ฐฎ์๊น ํ๊ณ O(nlogn)์ผ๋ก ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ชจ๋ ๊ฒ์ฌํ๋ ๋ฐฉ์์ผ๋ก ํด๋ดค์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
- ํ๊ทธ์ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๊ฐ ์๊ธธ๋ ์์๋ ๋๋์ด๋จ์ด์ง์ง ์์ผ๋๊น, ์์๋ฅผ ๋ชจ๋ ์ฐพ๊ณ ๊ทธ ์๋ค์ ๊ฒ์์์ ์ ์ธํ๋ค๋ ๊ฑด๊ฐ? ํ๋๋ฐ ์๋๋ ๋ค๋ฅผ๊น ํ๋ ธ๋ค.
- ์ง๋ฌธ ๊ฒ์ํ์ ์กฐ๊ธ ๋ค์ ธ๋ณด๋ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์์๋ก๋ง ์ดํดํ์ง ๋ง๊ณ , ๊ทธ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ ์ ๊ทผ์ ํ๋ฉด ๋๋ค๋๊ฑธ ์์๋ค.
- boolean ๋ฐฐ์ด isNum์ ํฌ๊ธฐ๋ฅผ 1_000_000์ผ๋ก ์ฃผ์๋๋ ๋ฑ ๋ง๊ฒ 1_000_000๊ฐ ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ์๋์ง, ๋ฐํ์ ์๋ฌ๊ฐ ๋์ ์์ ํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1647 : ๋์ ๋ถํ ๊ณํ (0) | 2024.03.14 |
---|---|
BOJ_1197 : ์ต์ ์คํจ๋ ํธ๋ฆฌ (0) | 2024.03.13 |
BOJ_2166 : ๋ค๊ฐํ์ ๋ฉด์ (0) | 2024.03.11 |
BOJ_13172 : ฮฃ (0) | 2024.03.10 |
BOJ_11054 : ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด (0) | 2024.03.10 |