본문 바로가기
알고리즘 기초시절

백준 왕실의 나이트(C) 수학적 풀이, 완전 탐색적 풀

by 뜨거운 개발자 2023. 1. 8.
#include<stdio.h>

int main()
{
	int count = 8;
	char input[3];
	scanf("%s", input);
	int check = input[0] + input[1] - 'a' - '1';
	if (check == 0 || check == 14)
		count -= 6;
	else if (check == 1 || check == 13)
		count -= 5;
	else if (check == 2 || check == 12)
		count -= 4;
	else if (check == 3 || check == 11)
		count -= 3;
	else if (check == 4 || check == 10)
		count -= 2;
	printf("%d", count);
}

좀 이상하게 조건문에 꽂쳐서 수학적으로 풀었지만 사실 이렇게 풀라고 내놓은 문제가 아니니 이제 완전 탐색으로도 풀어봐야겠다.

#include<stdio.h>

int main()
{
	int knight_move[8][2] = { {1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1} };
	char input[3];
	scanf("%s",input);
	int count = 0;
	for (int i = 0; i < 8; i++)
	{
		if ('a' <= input[0] + knight_move[i][0] && input[0] + knight_move[i][0] <= 'h'&& '1' <= input[1] + knight_move[i][1] && input[1] + knight_move[i][1] <= '8')
			count++;
	}
	printf("%d", count);
}

이게 완전 탐색으로 푼 방법이다. 이것역시 저 부분을 변수에 대입할 수 있지만 그냥 풀었다.

728x90