๐ ๋ฌธ์
๐ ์์ด๋์ด
์ฒ์์๋ ๊ทธ๋ฅ ๊ธฐ๋ณธ์ ์ธ bruteforceํ์ด๋ฅผ ์งํํ์๋ค. ๊ณจ๋ ๋ฌธ์ ์ ์ด์ธ๋ฆฌ์ง ์๋๋ค๊ณ ์๊ฐํ๋๋ฐ ๋ฐ๋ก ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
์ด ํ์ด๋ฅผ ๊ทธ๋๋ก ๋ฉํฐ๋ฒ์ค 1๋ฒ์ ๋ฃ์ผ๋ ํต๊ณผ๋์๋ค(๋ธ๋ก ์ฆ 5)
๋ชปํ๊ฒ ๋ค ํ๊ณ ์นจ๋์ ๋์์์๋๋ฐ ๊ฐ ํ์ฑ์ ๋ฑ์๋ฅผ ๋งค๊ธฐ๊ณ ๊ทธ ๋ฑ์๊ฐ ๋์ผํ ์ฐ์ฃผ๊ฐ ์๋ค๋ฉด ๋์ผํ๊ฒ ๊ท ๋ฑํ๋ค๊ณ ํ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋์ ์น ์ ๋ ฌ์ ํ๊ณ ๋ฑ์๋ฅผ ๋งค๊ฒผ๋ค.
๋ฑ์๋ฅผ ๋งค๊ธธ๋ ๋์ผํ ์ซ์๋ ๋์ผํ ๋ฑ์๋ฅผ ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ list์ ๋ฃ๊ณ indexOf๋ฅผ ์ด์ฉํด์ ๋ฑ์๋ฅผ ๋งค๊ฒผ๋ค. ๊ทธ๋ฐ ํ ํด์์ ํด๋น ๋ฐฐ์ด์ ์คํธ๋ง ๋ณํ ํ ๋ง์ง๋ง์ ๊ณ์ฐํด์ ๋ต์ ๋ด์๋ค -> ์๊ฐ ์ด๊ณผ.
์ดํ์ ์ขํ ์์ถ ๊ธฐ๋ฅ์ ํ์ธํ๊ณ ์ขํ์์ถ๋ฐฉ์์ผ๋ก ์งํํ์๋ค. ์ขํ ์์ถ์ ์๋ ๋ธ๋ก๊ทธ์์ ์ ์ค๋ช ๋์ด์์ด ์ฐธ๊ณ ํ์๋ค.
๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด ๊ธฐ์กด ๊ฐ์ ๋ชจ๋ ๋ฆฌ์คํธ์ ๋ฃ๊ณ ์ ๋ ฌํ ํ์ ํด์์ {์ ๋ ฌ๊ฐ, ํ์ฌ ๋ญํน๊ฐ}์ ๋ฃ๊ณ ๊ธฐ์กด ๋ฐฐ์ด์ ๋ค์ ๋๋ฉด์ ํด๋น ๊ฐ์ ํด๋นํ๋ ๋ญํน์ ๋นผ์ ๋์ฒดํด์ฃผ๋ฉด ๋๋ค. ํด๋น ๋ฐฉ๋ฒ์ด ์๋ ์ด๋ถ ํ์์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ ๊ฒ ๊ฐ์๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ํด๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋์ ๋๋์ฒด ๋ญ์ง ํ๋ค๊ฐ ๋ฑ์ ๋ฐฐ์ด์ ํด์์ ๋ฃ์ง์๊ณ ์์ ์ฐ์ฃผ๋ค ์ค ๋์ผํ ๊ฒ ์๋ค๋ฉด ๋ฐ๋ก ์ ๋ต ๊ฐ์๋ฅผ ํ๋ ์ฆ๊ฐํ๋๋ก ํ์๋ค ์ด๋ ๊ฒ ํด์ ํต๊ณผํ์๋ค.(์คํธ๋ง์ด ๊ธธ ๊ฒ ๊ฐ์์ ๋ถ์ํ๊ธด ํ๋๋ฐ ์ฌ๊ธฐ์ ์๊ฐ์ด๊ณผ๋ผ๋์ด)
https://st-lab.tistory.com/279
๐ ํ์ด
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Boj_18869_๋ฉํฐ๋ฒ์ค2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int galaxyCnt = Integer.parseInt(st.nextToken());//์ฐ์ฃผ์ ๊ฐ์
int planetCnt = Integer.parseInt(st.nextToken());//์ฐ์ฃผ ํ์ฑ์ ์
int[] map = new int[planetCnt];
int[][] ranks = new int[galaxyCnt][planetCnt];
List<Integer> sorted = new ArrayList<>();
HashMap<Integer, Integer> sortedHash = new HashMap<>();
int rank, cnt = 0;
for (int i = 0; i < galaxyCnt; i++) {
st = new StringTokenizer(br.readLine());
sorted.clear();
sortedHash.clear();
for (int j = 0; j < planetCnt; j++) {
map[j] = Integer.parseInt(st.nextToken());
sorted.add(map[j]);
}
Collections.sort(sorted); //์ฐ์ฃผ์ ํ์ฑ์ ์ ๋ ฌํ๋ค.
rank = 1;
for (int j = 0; j < planetCnt; j++) {
if (!sortedHash.containsKey(sorted.get(j)))
sortedHash.put(sorted.get(j), rank++); //๊ฐ ์ซ์์ ๋ฑ์๋ฅผ ๋งค๊ธด๋ค
}
for (int j = 0; j < planetCnt; j++) {
ranks[i][j] = sortedHash.get(map[j]); //๋งค๊ฒจ์ง ๋ฑ์๋ฅผ ๊ฐ ํ์์ ์์น์ ๋ฑ๋กํด์ค๋ค.
}
//์์ ๋ณด๋ค ์์ ์๋ ์ฐ์ฃผ๋ค์ค์ ํํํ๊ฒ์ด ์๋ค๋ฉด ์ถ๊ฐํ๋ค.
for (int p = 0; p < i; p++) {
if (check(ranks[i], ranks[p])) {
cnt++;
}
}
}
System.out.println(cnt);
}
private static boolean check(int[] a, int[] b) {
for (int i = 0; i < a.length; i++) {
if (a[i] != b[i]) {
return false; //๋ง์ฝ ๋ฑ์๊ฐ ๊ฐ์ง ์๋ค๋ฉด ๋ฐ๋ก ๋ฆฌํดํ๋ค. ( ๊ท ๋ฑํ์ง ์๋ค )
}
}
return true;
}
}
'๋ฐฑ์ค(boj)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA]11780 ํ๋ก์ด๋, ํ๋ก์ด๋ ์์ (1) | 2023.08.09 |
---|---|
[JAVA]๋ฐฑ์ค 13335 ํธ๋ญ Deque, queue (0) | 2023.07.31 |
[JAVA]1374 ๊ฐ์์ค (0) | 2023.07.16 |
[JAVA]3109 ๋นต์ง (0) | 2023.07.12 |
[JAVA]1802 ์ข ์ด์ ๊ธฐ ๋ถํ ์ ๋ณต (0) | 2023.07.12 |