본문 바로가기
Algorithm/문제 풀이

[알고리즘] 체스판 하얀 칸 (백준 1100번)

by Sky Titan 2020. 8. 24.
728x90
 

1100번: 하얀 칸

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

www.acmicpc.net

 사실 이 문제는 굉장히 쉬운지라 어떻게 풀어도 상관은 없지만 다른 사람들 코드를 보니 의외로 이 사실을 모르는 것 같아서 한 번 올려본다.

 

Solution

 

 만약 이런 체스판이 있다고 쳤을 때 (가로 index + 세로 index), 즉 i + j 가 흰 칸은 짝수이고 검은 칸은 홀 수 이다.

  

 그래서 굳이 i 가 짝수일 때, 홀수 일 때 경우, j가 짝수 혹은 홀수 일 때 경우를 분기할 필요 없이 (i+j)가 짝수, 홀수인 경우로만 분기하면 된다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {


    public static void main(String[] args) {

        try
        {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            int count = 0;

            for(int i = 0; i < 8;i++)
            {
                String str = br.readLine();

                for(int j = 0;j < 8; j++)
                {
                    char c = str.charAt(j);

                    //i + j 가 짝수이면 흰칸
                    if((i+j) % 2 == 0)
                    {
                        if(c == 'F')
                            count++;
                    }
                }
            }

            System.out.println(count);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

    }

}
728x90

댓글