백준

[백준 1100] 하얀 칸 JAVA

오은이 2024. 11. 27. 23:52

 

 

 

 

 

 

 


 

 

 

 

 

 

처음 작성한 코드 - 1차원 배열

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		
		String[] s = new String[8];
		int cnt = 0;
		
        for (int i = 0; i < 8; i++) {
			s[i] = sc.next();
		}
        
        for (int i = 0; i < 8; i++) {
        	if(i % 2 == 0) {	//짝수 줄, 0 2 4 6, 흰 검 흰 ... 검
        		if(s[i].contains("F")) {	//줄에 F 있는 경우에만 센다.
        			for (int j = 0; j < s[0].length(); j+=2) {
        				if(s[i].charAt(j) == 'F') {
        					cnt++;
        				}
					}
        		}
        	}
        	else {	//홀수 줄, 1 3 5 7, 검 흰 검 ... 흰
        		if(s[i].contains("F")) {	//줄에 F 있는 경우에만 센다.
        			for (int j = 1; j < s[0].length(); j+=2) {
        				if(s[i].charAt(j) == 'F') {
        					cnt++;
        				}
					}
        		}
        	}

        }
        System.out.println(cnt);
    }
}

 

 

코드가 너무 중복되는 것 같아 조금 바꿔본다.

 

 

 

 

 

 

 

 

 

처음 작성한 코드 간결화

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] s = new String[8];
        int cnt = 0;

        for (int i = 0; i < 8; i++) {
            s[i] = sc.next();
        }

        // 8x8 체스판을 돌며 'F'를 카운트
        for (int i = 0; i < 8; i++) {
            int startIdx = (i % 2 == 0) ? 0 : 1;  // 짝수줄은 0부터, 홀수줄은 1부터 시작
            for (int j = startIdx; j < s[i].length(); j += 2) {
                if (s[i].charAt(j) == 'F') {
                    cnt++;
                }
            }
        }
        System.out.println(cnt);
    }
}

 

 

성능에는 별 차이 없지만, 훨씬 짧아졌다.

 

 

 

 

 

 

 

 

 

 

 

 

2차원 배열 사용

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[][] board = new char[8][8];  // 8x8 체스판
        int cnt = 0;

        for (int i = 0; i < 8; i++) {
            board[i] = sc.next().toCharArray();  // 한 줄씩 입력을 받아서 char 배열로 저장
        }

        // 2차원 배열을 돌면서 하얀 칸 찾기
        for (int i = 0; i < 8; i++) {
            for (int j = (i % 2 == 0) ? 0 : 1; j < 8; j += 2) {  // 짝수 행은 0부터, 홀수 행은 1부터
                if (board[i][j] == 'F') {
                    cnt++;
                }
            }
        }
        System.out.println(cnt);
    }
}

 

 

체스판이 8X8이기 때문에 2차원 배열을 사용해도 될 것 같아 적용해본 방식

 

 

 

 

 

 

채점 결과