카테고리 없음

[c++] 백준 알고리즘 1100번 하얀칸

기술1 2024. 5. 24. 19:59
반응형

 

문제

 

코드

#include <iostream>
#include <string>
using namespace std;
//하얀색 0 검은색 1 

int main() {
	int arr1[8] = { 0, 1, 0, 1, 0, 1, 0, 1 };
	int arr2[8] = { 1, 0, 1, 0, 1, 0, 1, 0 };
	string n;
	int count = 0;
	for (int k = 0; k < 8; k++)
	{
		cin >> n;
		for (int i = 0; i < 8; i++)
		{
			if (k == 0 || k % 2 == 0)
			{
				if (arr1[i] == 0 && n[i] == 'F')
				{
					count++;
				}
			}
			else
			{
				if (arr2[i] == 0 && n[i] == 'F')
				{
					count++;
				}
			}

		}
		
	}
	cout << count << endl;

	return 0;
}

 

문제풀이

이중 for문을 써주고 if문으로 처리를 해주었습니다.
체스판에서 0을 하얀색으로 1을 검정색으로 해서 배열을 만들어줬으며 총 세로기준으로 홀수일 때 arr1, 짝수일 때 arr2가 나오도록 해주었습니다. 

코드는 읽어보면 풀 수 있을 정도의 난이도입니다.

 

물론 이 풀이말고 다르게 풀이를 해도 되는데요.

 

char arr[8][8] 이런식으로 바로 2차원배열을 표현해주셔도 가능합니다. 

for(int i=0; i<8; i++)
{
	for(int j=0; j<8; j++)
    { 
    cin >> arr[i][j];
    if(arr[i][j] == 'F')
    {
    	if(i%2 ==0 && j%2 == 0)
        	count++;
        else if(i%2 == 1 && j%2 == 1)
        	count++;
    }
}

이런식으로 이차원 배열로 묶은 다음에 가로 세로를 판별해줘도 똑같이 값이 나옵니다. 

반응형