목록알고리즘/백준 - 이론 공부 (7)
공부한것들을 정리하는 블로그 입니다.
1. Swap 을 이용한 순열 // 순서 없이 n 개중에서 r 개를 뽑는 경우 // perm(arr, 0, n, r); static void perm(int[] arr, int depth, int n, int r) { if (depth == r) { print(arr, r); return; } for (int i=depth; i
보호되어 있는 글입니다.
보호되어 있는 글입니다.
선요약 • Java에서 String 의 += 연산은 O(N+K) 이다 • Java의 경우 StringBuilder 를 이용해야 한다 Java 입출력 • Java는 입력은 Scanner, 출력은 System.out을 사용한다. Scanner sc = new Scanner(System.in); • 입력이 많은 경우에는 속도가 느리기 때문에, BufferedReader를 사용한다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); • 출력이 많은 경우에는 StringBuilder를 사용해서 한 문자열로 만들어서 출력을 한 번만 사용하거나 • BufferedWriter를 사용한다. 시간 복잡도 시간 복잡도 안에 가장 큰 입력 범위..
1. 경우의 수 • N명의 사람이 한 줄로 서는 경우의 수 → N × (N-1) × … × 1 = N! • N명의 사람 중에서 대표 두 명을 뽑는 경우의 수 → N × (N-1) / 2 • N명의 사람 중에서 대표 세 명을 뽑는 경우의 수 → N × (N-1) × (N-2) / 3! • N명의 사람 중에서 반장 1명과 부반장 1명을 뽑는 경우의 수 → N × (N-1) • N명의 사람이 있을 때, 각 사람이 영화를 볼지, 보지 않을지 결정한다. 가능한 조합의 수 → 2N 2. 그냥 다 해보기 예제 : 일곱 난쟁이 https://drsggg.tistory.com/537 브루트 포스 2309번 일곱 난쟁이 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 ..
브루트 포스(Brute Force) 브루트 포스는 '모든 경우의 수'를 다 해보는 것이다. 이 때, 경우의 수를 다 해보는데 걸리는 시간이 문제의 시간 제한을 넘지 않아야 한다. ( * '모든 경우의 수' : 가능한 벙법 ) 따라서 브루트 포스 문제의 경우 '모든 경우의 수'가 몇가지 나오는지 알아보는 것이 상당히 중요 브루트 포스는 모든 방법을 1번씩 시도해보기 때문에 아래 3가지 단계를 생각해볼 수 있다. 1. 문제의 가능한 경우의 수를 계산해본다. • 직접 계산을 통해서 구한다. 대부분 손으로 계산해볼 수 있다. 2. 가능한 모든 방법을 다 만들어본다. • 하나도 빠짐 없이 만들어야 한다. • 대표적으로 그냥 다 해보는 방법, for문 사용, 순열 사용, 재귀 호출 사용, 비트마스크 사용이 있다. ..
보호되어 있는 글입니다.