본문 바로가기

백준

1100 하얀칸

늘 그렇듯 문제 정의하고 어떻게 풀지 짰다. 저걸 코드로 옮기면서 문제를 두 개 발견했는데 (하나는 문제는 아니지만) 먼저 어짜피 홀수 줄 아니면 짝수줄이라 굳이 변수를 두 개 만들 필요가 없다. 나머지는 엔터키..! 자꾸 뭔가 이상해서 확인해봤더니 scanf(c)가 enter까지 받아서 계산을 잘못 하고 있었다. 

 

#include <iostream>

int main() {
    char c;
    bool isOdd = true;
    int count = 0;
    
    for(int i = 1; i <= 64; i++){
        scanf("%c", &c);
        if(isOdd){
            if(i%2 == 1 && c == 'F')
                count++;
        }
        else{
            if(i%2 == 0 && c == 'F')
                count++;
        }
        if(i%8 == 0){
            scanf("%c", &c);    //remove buffer
            isOdd = !(isOdd);
        }
        
    }
    printf("%d", count);
    
    return 0;
}

아무튼 두 개를 고쳤고 맞았다! 지금 보니 remove buffer가 아니고 그냥 엔터키 지우는건데 저리 적었었네

 


나는 하나씩 읽어서 어느 줄인지 확인 하고 흰색 칸 확인하고 다음 줄 띄우고 했는데 그냥 한 줄 읽어서 흰색 칸이고 F인지 확인할 수 있었다. 

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int count = 0;
    
    //한 줄씩 읽는다
    for(int i = 0; i < 8; i++){
        string s;
        cin >> s;
        
        for(int j = 0; j < 8; j++){
            if(s[j] == 'F' && (i+j) % 2 == 0)
                count++;
        }
    }
    
    printf("%d", count);
    return 0;
}

 홀수 짝수 달라지는 건 어떻게 처리하지 했는데 그냥 i값이 달라지면서 자동으로 처리된다

'백준' 카테고리의 다른 글

6539 만취한 상범  (0) 2019.10.09
1037 약수  (0) 2019.10.09
1009 분산처리  (0) 2019.10.08
2902 KMP는 왜 KMP일까?  (0) 2019.10.08
2309 일곱 난쟁이  (0) 2019.10.08