210109 | 백준 브루트포스 1018, 1436 | C++

박나연·2021년 1월 9일
0

하루백준

목록 보기
6/20
post-custom-banner

1018

1018번 : 체스판 다시 칠하기

#include <iostream>
using namespace std;

int main() {
	int row, col;
	cin >> row >> col;

	char color[50][50];
	char arr1[8][8];
	char arr2[8][8];
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			cin >> color[i][j];
			if (i < 8 && j < 8) {
				if (i % 2 == 0) {
					if (j % 2 == 0) {
						arr1[i][j] = 'B'; // 젤왼쪽위 B
						arr2[i][j] = 'W'; // 젤왼쪽위 W
					}
					else {
						arr1[i][j] = 'W';
						arr2[i][j] = 'B';
					}
				}
				else {
					if (j % 2 == 0) {
						arr1[i][j] = 'W';
						arr2[i][j] = 'B';
					}
					else {
						arr1[i][j] = 'B';
						arr2[i][j] = 'W';
					}
				}
			}
		}
	}

	int n = 0, m = 0;
	int count1 = 0;
	int count2 = 0;
	int min1 = 64, min2 = 64;
	for (n = 0; n <= row - 8; n++) {
		for (m = 0; m <= col - 8; m++) {
			count1 = 0;
			count2 = 0;

			for (int i = 0; i < 8; i++) {
				for (int j = 0; j < 8; j++) {
					if (color[i + n][j + m] != arr1[i][j])
						count1++;
					else if (color[i + n][j + m] != arr2[i][j])
						count2++;

				}
			}
			if (min1 > count1)
				min1 = count1;
			if (min2 > count2)
				min2 = count2;
		}
	}

	if (min1 > min2)
		cout << min2;
	else
		cout << min1;
}

우선, 입력받은 크기만큼 사용자에게 색상을 입력하도록함과 동시에 비교할 샘플 arr 를 입력한다. 두 arr가 존재하는데 하나는 제일 왼쪽 위가 B인것, 하나는 제일 왼쪽위가 W인것이다. 각 arr의 크기는 8*8이다.

사용자가 입력한 배열중 [0][0]부터 시작하여 8*8 크기만큼을 두개의 arr와 비교하여 바꿔야할 부분을 count한다.
arr1 와 arr2일때의 count를 비교한 후 더 작은 count를 출력하도록 한다.


1436

1436번 : 영화감독 숌

처음에는 666, 1666, 2666, 3666, 4666, 5666, 6666,7666 ... 이런식으로 올라가는 줄 알고 너무 쉬운데..?! 뭔가 이상하다 생각했는데

알고보니 666이 포함되는 숫자들이면 모두 가능한 것이다. 즉 6660, 6661, 6662 등도 포함해주어야 하는 것이다.

따라서 665부터 1씩증가시키며 모든 숫자를 비교하고, 이 숫자를 string으로 바꾸어 666이 포함되는 지를 find로 찾아내 만약 포함된다면 count를 올려준다. 처음입력한 N번째 와 count가 같은 수가 되면 숫자를 출력한다.

#include <iostream>
#include <string>
using namespace std;

int main() {
	int N;
	cin >> N;

	int num = 665;
	string s;
	int count = 0;
	while (true) {
		num++;
		s = to_string(num);
		if (s.find("666") != -1)
			count++;

		if (count == N) {
			cout << num;
			break;
		}
	}
}
profile
Data Science / Computer Vision
post-custom-banner

0개의 댓글