브루트포스 알고리즘 34

1254번: 팰린드롬 만들기

https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 문자열 K의 뒤에 문자 K개를 추가해서 팰린드롬을 만든다는 말은, 문자열 S를 뒤집은 문자열 S'에 문자 K개를 추가해 팰린드롬을 만드는 것과 같다. 이 떄 S'의 앞에서부터 시작하는 부분 문자열 S'p가 팰린드롬이라면, K는 곧 S'의 길이에서 Sp의 길이를 뺀 값과 같다. 따라서 이 문제는 문자열 S가 뒤에서 얼마나 긴 팰린드롬을 가지고 있는지를 알아내는 문제와 같다. #include using n..

1107번: 리모컨

https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 채널 N으로 이동하는 데에는 두 가지 방법이 있다. 이전/다음 채널 버튼만 이용하는 경우와, 숫자 버튼으로 채널을 이동한 다음 이전/다음 채널로 이동하는 경우. 숫자 버튼으로 채널을 이동하는 경우는 비용을 최소로 할 가능성이 있는 채널을 고르는 것이 중요한데, 이를 위해선 우선 숫자 버튼을 눌러 채널을 이동했다고 가정해야 한다. 숫자를 눌러 이동한 채널 K에 대해, 채널 K에서 채..

1065번: 한수

https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 한 자리 수와 두 자리 수는 각 자리 수의 차가 일정하므로 반드시 한수이다. 또 세 자리 수는 브루트포스로 판정이 가능하고, 1000은 한수가 아님이 자명하므로 입력이 두 자리 수 이상이라면 브루트포스로 정답을 출력할 수 있다. #include int main() { // input: 한수의 개수를 계산할 범위, ans: 범위 내의 한수의 개수 int input, ans = 99; scanf("%d"..

1018번: 체스판 다시 칠하기

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 잠시 체스판의 색 배치를 보자. 이미지의 a~h를 1~8로 치환해서 보면, 이미지의 i번째 행 / j번째 열의 색은 i + j가 홀수인지 짝수인지에 따라 결정된다. 따라서 체스보드 판의 색을 칠하기 위해선, 체스판의 i번째 행 / j번째 열의 색을 i + j에 따라 흰색 혹은 검은색으로 칠하면 된다. #include #define MAX 50 // board[i][j]: (i, j) 칸이 ..