π 1. λ¬Έμ μκ°
18869λ²: λ©ν°λ²μ€ β ‘
Mκ°μ μ°μ£Όκ° μκ³ , κ° μ°μ£Όμλ 1λΆν° NκΉμ§ λ²νΈκ° λ§€κ²¨μ§ νμ±μ΄ Nκ° μλ€. νμ±μ ν¬κΈ°λ₯Ό μκ³ μμλ, κ· λ±ν μ°μ£Όμ μμ΄ λͺ κ°μΈμ§ ꡬν΄λ³΄λ €κ³ νλ€. ꡬμ±μ΄ κ°μλ° μμλ§ λ€λ₯Έ μ°μ£Όμ μ
www.acmicpc.net
π 2. νμ΄
𧡠1. μ’ν μμΆ
λ¬Έμ μ ν¬μΈνΈλ μ’ν μμΆμ΄λ€.
μ’ν μμΆμ΄λ μ’ν κ°λ€μ μμ λ²μμ κ°μΌλ‘ μμΆνλ κ²μ΄λ€. μμ κ°μ μκ΄μμ΄ μμ λμκ΄κ³λ§ μλ©΄ λ λ μ¬μ©ν μ μλ€.
-100, -4, 0, 3, 5000μ΄λΌλ μ’νκ° μλ€κ³ ν΄λ³΄μ. μ΄λ₯Ό λ°°μ΄μ²λΌ νμνλ€λ©΄ λ€μκ³Ό κ°λ€.
-100 | ... | -4 | ... | 0 | ... | 3 | ... | 5000 |
μ‘΄μ¬ | μ‘΄μ¬ | μ‘΄μ¬ | μ‘΄μ¬ | μ‘΄μ¬ |
νμ§λ§ μμΆμ μ΄μ©νμ¬ λμκ΄κ³λ§ νμ νλ€λ©΄ λ€μκ³Ό κ°μ΄ ννν μ μλ€.
μ’ν μμΆ κ° | 0 | 1 | 2 | 3 | 4 |
μ€μ κ° | -1000 | -4 | 0 | 3 | 5000 |
μ’ν μμΆμ μ΄μ©νμ¬ κΈ°μ‘΄μ νμνλ -100 ~ 5000κΉμ§μ 곡κ°μ 0 ~ 4κΉμ§μ 곡κ°μΌλ‘ μ€μΌ μ μλ€.
𧡠2. νμ΄
μ’ν μμΆμ μ΄ν΄νλ€λ©΄ λ¬Έμ μ νμ΄λ²μ μ½κ² μκ°ν μ μλ€. λ μ°μ£Όκ° κ· λ±νκΈ° μν΄μλ κ²°κ΅ μ’ν μμΆλ κ°μ΄ μΌμΉνλ©΄ λλ€.
2κ°μ μ°μ£Όμ μνλ νμ±μ ν¬κΈ°κ° κ°κ° '1 3 2', '12 50 31μ΄λΌκ³ ν΄λ³΄μ. κ° μ°μ£Όλ₯Ό μ’ν μμΆνλ©΄ μλμ κ°λ€.
- 1 3 2 → 1 3 2
- 12 50 31 → 1 3 2
μ’ν μμΆ κ°μ΄ κ°μΌλ―λ‘ κ²°κ΅ λ μ°μ£Όλ κ· λ±νλ€κ³ ν μ μλ€.
μ’ν μμΆ κ°κ³Ό κ· λ± μ°μ£Όμ λν μ΄ν΄κ° μ΄λ ΅λ€λ©΄ μΈμ ν κ°λ€μ λΆλ±νΈλ‘ λνλΈ κ²½μ°λ₯Ό μκ°ν΄ 보μ. '< < = >'μ '< < = >'λ κ· λ± μ°μ£Όκ³ , '< > >'μ '> < <'λ κ· λ± μ°μ£Όκ° μλλ€.
𧡠3. μκ°λ³΅μ‘λ
μ’ν μμΆμ ν λ μ΄λΆνμμ μ΄μ©ν΄μΌ νλ€. μ΄λΆ νμμ μ΄μ©νμ§ μλλ€λ©΄ νλμ μ°μ£Όμ νμ±λ€μ μ’ν μμΆνλλ° N^2μ μκ°μ΄ μμλλ€.
λ°λ©΄ μ΄λΆ νμμ μ΄μ©νκ² λλ©΄ NlogNμ΄ μμλλ€. νμ±(Nκ°)μ μ΄λΆνμ(logN)μ μ΄μ©νμ¬ μμ μ μμΉλ₯Ό μ°Ύμ μ μκΈ° λλ¬Έμ΄λ€.
π 3. μ½λ
public class Main {
static int N, M;
static int[][] nums, compressedNums;
static String[] ss;
static List<Integer>[] sortedNums;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
ss = in.readLine().split(" ");
M = Integer.parseInt(ss[0]);
N = Integer.parseInt(ss[1]);
nums = new int[M][N];
sortedNums = new ArrayList[M];
for(int i = 0; i < M; i++) {
Set<Integer> set = new HashSet<>();
ss = in.readLine().split(" ");
for(int j = 0; j < N; j++) {
int num = Integer.parseInt(ss[j]);
nums[i][j] = num;
set.add(num);
}
// μ΄λΆνμμ μν μ λ ¬λ νμ± μ μ₯
sortedNums[i] = new ArrayList<>(set);
Collections.sort(sortedNums[i]);
}
// μ’ν μμΆ
compressedNums = new int[M][N];
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
// μ΄λΆ νμ μ΄μ©
compressedNums[i][j] = Collections.binarySearch(sortedNums[i], nums[i][j]);
}
}
// μ°μ£Όμ μ’ν μμΆ κ°λ€μ λΉκ΅νμ¬ μ°μ£Όκ° κ· λ±νμ§ νμΈνλ€
int cnt = 0;
for(int i = 0; i < M; i++) {
for(int j = i + 1; j < M; j++) {
if(Arrays.equals(compressedNums[i], compressedNums[j]))
cnt++;
}
}
System.out.println(cnt);
}
}
'π μκ³ λ¦¬μ¦_λ¬Έμ νμ΄ > BOJ_λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ BOJ / JAVA] λ λ°°μ΄μ ν© (2143λ²) (1) | 2023.12.29 |
---|---|
[λ°±μ€ BOJ / JAVA] κ΄νΈμ κ° (2504λ²) (1) | 2023.12.26 |
BOJ 14865 - 곑μ μλ₯΄κΈ° [JAVA] (0) | 2023.02.28 |