본문 바로가기

백준/C++

[BaeKJoon/C++] 백준 1100 c++ 하얀 칸

반응형

https://www.acmicpc.net/problem/1100

 

1100번: 하얀 칸

체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램

www.acmicpc.net

 

문제

체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 8개의 줄에 체스판의 상태가 주어진다. ‘.’은 빈 칸이고, ‘F’는 위에 말이 있는 칸이다.

출력

첫째 줄에 문제의 정답을 출력한다.

예제 입력 1 복사

.F.F...F
F...F.F.
...F.F.F
F.F...F.
.F...F..
F...F.F.
.F.F.F.F
..FF..F.

예제 출력 1 복사

1

 

풀이

위의 그림처럼 하얀칸에 F가 입력되면 그것을 카운트해서 개수를 알아내는 문제이다.

1. 이중 for문을 이용해서 i%2==0 이고 j%!=0 일때 문자가 F라면 cnt++한다.

2 . i%2!=0 이고 j%2==0 일때 문자가 F라면 cnt++한다.

 

코드

#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
 
    string str;
 
    int cnt=0;
 
    for(int i=1; i<=8; i++){
        cin>>str;
        int len=str.length();
        for(int j=0; j<len; j++){
            if(i%2==0){
                if(j%2!=0){
                    if(str[j]=='F'){
                        cnt++;
                    }
                }
            }
            else{
                if(j%2==0){
                    if(str[j]=='F'){
                        cnt++;
                    }
                }
            }
        }
    }
 
    cout<<cnt;
}
cs

 

평소에 별찍기를 많이 해보신 분들이라면 손쉽게 풀었을 문제이다.

이중 for문 i와 j의 열과 행이 많이 헷갈릴수도 있다.

반응형