체스 판은 하얀칸과 검정칸이 번갈아가며 색칠되어 있다. 
(0,0)이 하얀칸이라는 조건이 있으니까, 짝수행의 짝수열은 하얀칸이다. 홀수행의 홀수열도 하얀칸이다. 
 
행,열이 둘다 짝수일때 F값인지 검사했다. 
행,열이 둘다 홀수일때 F값인지 검사했다. 
 
#include <bits/stdc++.h>
using namespace std;

char board[10][10];
int answer;

void check(int &h, int &w){
  if(board[h][w] == 'F') answer++;
}
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);

  for(int i = 0; i < 8; i++)
    for(int j = 0; j < 8; j++)
      cin >> board[i][j];
    
  for(int i = 0; i < 8; i++){
    for(int j = 0; j < 8; j++){
      if(i % 2 == 0 && j % 2 == 0) check(i, j);
      if(i % 2 == 1 && j % 2 == 1) check(i, j);
    }
  }
  cout << answer;

  return 0;
}
 
 
아래의 성질을 이용했다. 
짝수 + 짝수 == 짝수 
홀수 + 홀수 == 짝수 
#include <bits/stdc++.h>
using namespace std;

string st;
int answer;

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);

  for (int i = 0; i < 8; i++){
    cin >> st;
    for (int j = 0; j < 8; j++) {
      if((i + j) % 2 == 0 && st[j] == 'F') answer++;
    }
  }
  cout << answer;

  return 0;
}
 
 
728x90

+ Recent posts