Tags
- ๋๋น ์ฐ์ ํ์
- Brute Force Algorithm
- Java
- CodingTest
- ๋ฌธ์์ด
- BOJ
- dfs
- ์๋ฃ๊ตฌ์กฐ
- ์๋ฎฌ๋ ์ด์
- stack
- ๋ฐฑํธ๋ํน
- LV2
- ์ ์๋ก
- Dynamic Programming
- ์ํ
- greedy
- ๊ตฌํ
- DP
- PGM
- sort
- Python
- ๊น์ด ์ฐ์ ํ์
- Study
- ๊ทธ๋ํ ์ด๋ก
- SpringBoot
- queue
- ์ ๋ ฌ
- BFS
- ๊ต์ฌ
- ๊ทธ๋ํ ํ์
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_18870 : ์ขํ ์์ถ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์
๋ ฅ๋ฐ์ n๊ฐ์ ์์์ ์ ์ฒด ์
๋ ฅ ์ค์ ๋ ์์ ๊ฐ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
- 2์ฐจ์ ๋ฐฐ์ด arr[n][3]์ ์ ์ธํ๋ค.
- 1๋ฒ์งธ๋ ์ ๋ ฅ ๊ฐ, 2๋ฒ์งธ๋ ์ ๋ ฅ ์์, 3๋ฒ์งธ๋ ์์ถ ๊ฐ์ ์ ์ฅํ๋ค.
- 1๋ฒ์งธ ๊ฐ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- 3๋ฒ์งธ ๊ฐ์ ์ฑ์ด๋ค
- ๋ฐฐ์ด ์์์ ๋ถํฐ ๋ ์์ ๊ฐ์ 0, 1, 2...๋ก ์ปค์ ธ๊ฐ๋ค.
- ๊ฐ์ ๊ฐ์ด ์ฐ์๋์ ๋์ค๋ฉด ๊ฐ์ ํค์ฐ์ง ์๊ณ ๊ทธ๋๋ก ์ ์ฅํ๋ค.
- 2๋ฒ์งธ ๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด ์ฒ์ ์ ๋ ฅ ์์๋ก ๋๋๋ฆฐ๋ค.
- 3๋ฒ์งธ ๊ฐ์ ์ถ๋ ฅํ๋ค.
- 2์ฐจ์ ๋ฐฐ์ด arr[n][3]์ ์ ์ธํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Integer[][] arr = new Integer[n][3];
StringTokenizer st = new StringTokenizer(br.readLine());
// 1
for (int i = 0; i < n; i++) {
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = i;
}
// 2
// Arrays.sort(arr, (o1, o2) -> o1[0] - o1[0]); // ๋๋ค์ ํํ
Arrays.sort(arr, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
return Integer.compare(o1[0], o2[0]);
}
});
// 3
int count = 0;
arr[0][2] = count;
for (int i = 1; i < n; i++) {
if (!(arr[i][0].equals(arr[i-1][0])))
count++;
arr[i][2] = count;
}
// 4
Arrays.sort(arr, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
return Integer.compare(o1[1], o2[1]);
}
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(arr[i][2] + " ");
}
System.out.println(sb);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- 1) n๊ฐ์ ์์ ๊ทธ ์์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
- 2) ์ ๋ ฅ ๋ฐ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- 3) ๋ถ์ด์๋ ๊ฐ์ด ๊ฐ์ผ๋ฉด ๊ทธ๋๋ก, ๋ค๋ฅด๋ฉด count + 1 ๊ฐ์ ๋ฃ์ด ๋ฌธ์ ์ ์์ถ์ ์ ์ฅํ๋ค.
- 4) ์์ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ ์ฒ์ ์ ๋ ฅ๋ฐ์ ์์๋ก ๋๋๋ฆฐ๋ค.
- ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- 2์ฐจ์ ๋ฐฐ์ด์ ์ ์์์ ๊ฐ์๋ฅผ 3๊ฐ๋ก ์ง์ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
- ์ ๋ฒ์๋ ๋ณด๊ณ 2๋ฒ์งธ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ, ์ ์๊ฐํด๋ธ ๊ฒ ๊ฐ๋ค.
- ํน์ ๊ฐ์ผ๋ก ์ ๋ ฌํ๋ ์ค๋ฒ๋ผ์ด๋ ๋ฉ์๋ compare์์ Integer๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์๋๋ o1-o2๋ฅผ ์ฌ์ฉํ๋๋ฐ ์๋ํ์ง ์์๋ค. '-' ์ฐ์ฐ์๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ธ๋ฐ, Integer.compare()๋ฅผ ์ฌ์ฉํ๋ค. (๊ฐ์ ๊ฒฐ๊ณผ)
- 2๋ฒ์งธ ๊ฐ์ ๋ฃ๋ for๋ฌธ์์๋ if๋ฌธ์์ '!='์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋๋ฐ Integer ๋ผ๋ฆฌ์ ์ฐ์ฐ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ์๋ํ์ง ์์๋ค. .equals()๋ก ๋ณ๊ฒฝํ๋ค.
- ์๊ฐ์ด๊ณผ๊ฐ ๋์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅํ์์ ๋น ๋ฅด๊ฒ ๋ฐ๊ฟจ๋๋ ํต๊ณผ๋์๋ค.
- LCD ํจ๋์ ๋ฌธ์ ๋ถ์๊ณผ ์ฝ๋ฉ๊ณํ์ ์ง๋ ๋ฐฉ๋ฒ์ ์๋ํด ๋ณด์๋๋ฐ, ์ข์ ์ ์ด ๋ง์ ๊ฒ ๊ฐ์ ๋ ์ฐ์ตํ ์๊ฐ์ด๋ค.
- ๋ฌธ์ ๋ถ์์ด ๋ ํ์คํ๊ฒ ๋์๋ค. ๋ฌธ์ ๋ฅผ ๊ณ์ ๋ค์์ฝ์ง ์๊ณ ๊ณํ๋๋ก ์ญ ์ฝ๋ฉํ๋ค.
- ์ค๊ฐ์ ๊ณํ์ ์์ ํ ๋์๋ ํท๊น๋ฆฌ์ง ์์๋ค. (int๋ฅผ Integer๋ก ๋ณ๊ฒฝ ๋ฑ...)
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_9372 : ์๊ทผ์ด์ ์ฌํ (0) | 2023.01.24 |
---|---|
BOJ_11724 : ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2023.01.23 |
BOJ_24060 : ์๊ณ ๋ฆฌ์ฆ ์์ - ๋ณํฉ ์ ๋ ฌ 1 (0) | 2023.01.23 |
BOJ_25501 : ์ฌ๊ท์ ๊ท์ฌ (0) | 2023.01.20 |
BOJ_2566 : ์ต๋๊ฐ (0) | 2023.01.19 |