μ΄μ§ νμ
μ΄μ§ νμμ λ°μ΄ν°κ° μ λ ¬λμ΄ μλ μνμμ μνλ κ°μ μ°Ύμ λ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ΄λ€.
μ£Όμ νΉμ§μ λμ λ°μ΄ν°μ μ€μκ°κ³Ό νμ λμ κ°μ λΉκ΅νκ³ , λ°μ΄ν° ν¬κΈ°λ₯Ό μ λ°μ© μ€μ΄λ©΄μ μ°Ύλλ€λ κ²μ΄λ€.
μ λ ¬λ λ°μ΄ν°κ° μλ κ²½μ°, κ΅μ₯ν μ ν¨νκ² μ¬μ©λλ μΌλ°μ μΈ μκ³ λ¦¬μ¦μ΄κΈ°μ κΌ μμ§ν΄μΌ νλ€.
μ΄μ§ νμμ κ³Όμ
1. νμ¬ λ°μ΄ν° μ μ μ€μ κ°μ μ°Ύλλ€.
2. μ€μ κ° > νκΉ κ°μΈ κ²½μ°, μ€μ κ° κΈ°μ€ μΌμͺ½ λ°μ΄ν° μ μμ λ€μ νμνλ€.
3. μ€μ κ° < νκΉ κ°μΈ κ²½μ°, μ€μ κ° κΈ°μ€ μ€λ₯Έμͺ½ λ°μ΄ν° μ μμ λ€μ νμνλ€.
4. μ΄ κ³Όμ μ λ°λ³΅νλ€κ° μ€μ κ° = νκΉ κ°μ΄ λ μκ° μ’ λ£νλ€.
μ΄μ§ νμ λ¬Έμ μμ 1
λ°±μ€ 1920λ² λ¬Έμ λ₯Ό ν΅ν΄μ μ΄μ§ νμμ΄ μ¬μ©λλ κ°λ¨ν μμλ₯Ό μ μ μλ€.
1920λ²: μ μ°ΎκΈ°
첫째 μ€μ μμ°μ N(1 ≤ N ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λ€μ μ€μλ Nκ°μ μ μ A[1], A[2], …, A[N]μ΄ μ£Όμ΄μ§λ€. λ€μ μ€μλ M(1 ≤ M ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λ€μ μ€μλ Mκ°μ μλ€μ΄ μ£Όμ΄μ§λλ°, μ΄ μλ€
www.acmicpc.net
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] A = new int[n];
for(int i=0; i<n; i++) {
A[i] = sc.nextInt();
}
Arrays.sort(A);
int m = sc.nextInt();
for(int i=0; i<m; i++) {
boolean find = false;
int target = sc.nextInt();
int start=0;
int end = A.length - 1;
while(start <= end) {
int mid = (start+end)/2;
int midV = A[mid];
if (midV > target) {
end = mid - 1;
} else if (midV < target) {
start = mid + 1;
} else {
find = true;
break;
}
}
if (find) {
System.out.println(1);
} else {
System.out.println(0);
}
}
}
}
μ΄μ§ νμ μ체λ μκ° λ³΅μ‘λκ° O(logN)μ΄λ€.
μλ°μμ μ 곡λλ sort()λ nlogNλ§νΌμ μκ°λ³΅μ‘λκ° μμλλ―λ‘, λ°λ‘ λ¬Έμ κ° λμ§ μλλ€.
λ¬Έμ μ체λ μ΄μ§ νμμ κ°λ λ§ μμ§νλ©΄, μ μ λμ¬μ ν¬κ² μ΄λ ΅μ§ μμλ€.
μ΄μ§ νμ λ¬Έμ μμ 2
2343λ²: κΈ°ν λ μ¨
κ°ν λ μμ μ κΈ°ν κ°μ λμμμ λΈλ£¨λ μ΄λ‘ λ§λ€μ΄ νλ§€νλ €κ³ νλ€. λΈλ£¨λ μ΄μλ μ΄ Nκ°μ κ°μκ° λ€μ΄κ°λλ°, λΈλ£¨λ μ΄λ₯Ό λ Ήνν λ, κ°μμ μμκ° λ°λλ©΄ μ λλ€. μμκ° λ€λ°λλ κ²½
www.acmicpc.net
λ°±μ€ 2343λ² λ¬Έμ λ λ μ¨ μκ°μ΄ μ£Όμ΄μ§κ³ , λΈλ£¨λ μ΄μ μ΅μ ν¬κΈ°λ₯Ό μ°Ύλ λ¬Έμ μ΄λ€.
μ΄μ§ νμμμλ μ΄λ κ² λ²μκ° μ£Όμ΄μ§ μ λ΅ μμμμ μ΅μ λ΅μμ μ°Ύλ λ°©λ²μ΄ λκΈ°λ νλ€.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] A = new int[n];
int start=0;
int end=0;
for(int i=0; i<n; i++) {
A[i] = sc.nextInt();
if (start < A[i]) {
start = A[i];
}
end += A[i];
}
while(start <= end) {
int middle = (start + end) / 2;
int sum = 0;
int count = 0;
for(int i=0; i<n; i++) {
if (sum + A[i] > middle) {
count++;
sum = 0;
}
sum += A[i];
}
if (sum != 0) {
count++;
}
if (count > m) {
start = middle + 1;
} else {
end = middle - 1;
}
}
System.out.println(start);
}
}
- μ΅μ κ°μ λ μ¨ μ€μ μ μΌ κΈ΄ λ μ¨ μκ°μ΄ λμ΄μΌ νλ€.
- μ΅λ κ°μ λ μ¨μ μκ°μ μ λΆ ν©ν κ°μ΄λ€.
- λΈλ£¨λ μ΄λ₯Ό μ¬μ©ν κ°μλ₯Ό 체ν¬νλ©°, μ΄μ§ νμμ ν΅ν΄ κ°μ λ²μλ₯Ό μ€μ¬μ€λ€.
μ΄μ§ νμ λ¬Έμ μμ 3
1300λ²: Kλ²μ§Έ μ
μΈμ€μ΄λ ν¬κΈ°κ° N×NμΈ λ°°μ΄ Aλ₯Ό λ§λ€μλ€. λ°°μ΄μ λ€μ΄μλ μ A[i][j] = i×j μ΄λ€. μ΄ μλ₯Ό μΌμ°¨μ λ°°μ΄ Bμ λ£μΌλ©΄ Bμ ν¬κΈ°λ N×Nμ΄ λλ€. Bλ₯Ό μ€λ¦μ°¨μ μ λ ¬νμ λ, B[k]λ₯Ό ꡬν΄λ³΄μ. λ°°μ΄ Aμ B
www.acmicpc.net
μ΄ λ¬Έμ λ μ΄μ§ νμμ μ¬μ©νλ κ² μ체λ₯Ό λ μ¬λ¦¬κΈ°κ° νλ€λ€.
λν kλ³΄λ€ μμ κ°μ κ°μλ₯Ό 2μ°¨μ λ°°μ΄μμ μ°Ύμλ΄λ κ·μΉμ λ°κ²¬ν΄μΌ νλ€.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int start = 1;
int end = k;
int ans = 0;
while(start <= end) {
int middle = (start + end) / 2;
int cnt = 0;
for(int i=1; i<=n; i++) {
cnt += Math.min(middle / i, n);
}
if (cnt < k) {
start = middle + 1;
} else {
end = middle - 1;
ans = middle;
}
}
System.out.println(ans);
}
}
νμ΄ μ체λ κ΅μ₯ν κ°λ¨νλ€. κ·Έ λ§νΌ κ·Έ κ·μΉμ μ°ΎκΈ° νλ€λ€λ λ§μ΄κΈ°λ νλ€.
μ€μν κ²μ kλ³΄λ€ μμ μλ₯Ό μΈλ μμ΄λμ΄ μμ²΄μΈ κ²μ΄λ€.
- ν νμμ μ€μ κ°λ³΄λ€ μκ±°λ κ°μ μλ₯Ό μ°ΎμμΌ νλ€.
- μ΄ λ, κ° νμ 1μ λ°°μ νν, 2μ λ°°μ νν, 3μ λ°°μ νν... μ κ°μ΄ μ΄λ£¨μ΄μ Έ μλ€.
- μ΄λ¬ν μν©μμ μ€μ κ°λ³΄λ€ μκ±°λ κ°μ μλ₯Ό μ°ΎκΈ° μν΄μλ, μ€μ κ°μμ κ° νμ λ²νΈ(1, 2, 3...)μ λλμμ λμ κ°κ³Ό κ° νμ λ²νΈ κ·Έ μ체μμ λ μμ κ° νλλ₯Ό μ ννλ€.
- μ€μ κ°λ³΄λ€ μκ±°λ κ°μ μμ κ°―μκ° kλ³΄λ€ ν¬κ±°λ κ°μ κ²½μ°μ μ λ΅μ μ μ₯νλ€.
Reference
- Do it! μ½λ© ν μ€νΈ - κΈ°μ΄ νΈ
'π Knowledge > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] μ μλ‘ - μμμ κ΄νμ¬ (0) | 2023.08.30 |
---|---|
[μκ³ λ¦¬μ¦] 그리λ μκ³ λ¦¬μ¦ (0) | 2023.08.28 |
[μκ³ λ¦¬μ¦] DFSμ BFS λ€λ£¨κΈ° (0) | 2023.08.25 |
[μκ³ λ¦¬μ¦] μ λ ¬(λ³ν©, κΈ°μ) μκ³ λ¦¬μ¦ (3) (0) | 2023.08.18 |
[μκ³ λ¦¬μ¦] μ λ ¬(ν΅ μνΈ) μκ³ λ¦¬μ¦ (2) (0) | 2023.08.14 |