브루트포스

CS/알고리즘 문제 풀이

[백준] 17471 - 게리맨더링 [Python(파이썬)]

문제 www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net 풀이 역시 삼성 SW A형 문제답게 브루트 포스문제였다. 거기에 그래프 탐색이 더해졌다. 이 문제 또한 2가지의 부분 문제로 나눠볼 수 있다. 1) 선거구를 어떻게 나눌 것인가 2) 어떻게 그래프 탐색을 할 것인가 1) 선거구를 어떻게 나눌 것인가 조합을 사용하여 선거구를 나눈다. 이때 n의 절반(1~n//2)만큼만 조합을 구하면 된다. 이는 mCn = n-mCn이 성립하는 조합의 성질을 잘 생각해보면 알 수 있다. 즉, 한 ..

CS/알고리즘 문제 풀이

[백준] 16637 - 괄호 추가하기 [Python(파이썬)]

문제 www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net 풀이 기본적으로 브루트포스에 속하지만, 백트래킹을 적용하여 풀 수 있는 문제였다. 이 문제는 다음과 같은 부분 문제로 나눠볼 수 있다. 1) 현재 상태에서 괄호를 넣는 경우와 안 넣는 경우를 모두 검사한다. 2) 괄호를 취한 식을 계산한다. 1)부터 살펴보자. 여기선 이 문제의 제약 조건 중 "중첩된 괄호는 사용할 수 없다."에 주목해야 한다. 이 말은 괄호의 위치가 고정되어 있다는 뜻이다..

코택
'브루트포스' 태그의 글 목록