본문 바로가기
알고리즘/코딩 - 백준

[Java][자바][백준][1100번] 하얀 칸

by 주남2 2019. 11. 8.
반응형

문제 설명

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

입력

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

출력

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

 

생각

문자열 처리와 좌표를 생각하면 되는 문제이다. (0,0)이 하얀색이므로 (0,2) , (0,4) , (0,6) 이 하얀 칸이 될 것이다.

또한 (1,1) , (1,3) , (1,5) (1,7) 이 하얀 칸이 될 것이다. 각 행이 번갈아가면서 반복되므로 홀수행, 짝수행을 나누어서 처리해줘도 된다. 하지만 나는 각 좌표의 합이 짝수가 된다면 하얀 칸이라고 생각하고 문제를 풀었다.

 

그렇게 하니 코드가 매우 간결해졌다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int count = 0;
        String[][] map = new String[8][8];
        
        for(int i=0; i<map.length; i++) {
            String[] str = br.readLine().split("");
            for(int j=0; j<map[0].length; j++) {
                map[i][j] = str[j];
            }
        }
        
        for(int i=0; i<map.length; i++) {
            for(int j=0; j<map[0].length; j++) {
                if((i+j)%2 == 0 && map[i][j].equals("F")) {
                    count++;
                }
            }
        }
        
        System.out.println(count);
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

글을 못 쓴 이유는 (아무도 궁금하진 않았겠지만) 요즘 매우 바빴다. 인생 첫 대기업 면접도 있었고 인턴 생활도 바쁘고.. 이래저래 힘든 2주 정도였다. 다시 힘내서 포스팅을 해야겠다.

반응형