Study/알고리즘

백준 1100번 - 하얀 칸 JAVA

토기발 2022. 7. 24. 22:32

(0.0)이 나온걸 보면 배열 문제다.

for문을 두번 돌리면 될 것 같은데 하얀 칸을 어떻게 구하면 좋을까?

 

하얀 칸은 (0.0) (0,2) (0.4) .... 두번째 줄은 (1,1) (1,3) (1,5)... 이다. 이 배열들의 공통점은 두 수를 더하면 짝수라서 2로 나누면 나머지가 0이 된다.

 

첫번째 줄 - 앞의 숫자가 짝수, 뒤의 숫자가 짝수

두번째 줄 - 앞의 숫자가 홀수, 뒤의 숫자도 홀수

....

인 경우가 흰 칸이다.

 

 

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

public class Main {
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int result = 0;	//최종 값
		for(int i = 0; i < 8; i++) {
			String chess = br.readLine();
			for(int j = 0; j < 8; j++) {			
				if(i % 2 == 0) { //짝수좌표
					if(j % 2 == 0) { //짝수 = 짝수(흰색)
						if(chess.charAt(j) == 'F') result++; //result를 추가해준다. 
					}
				}else {
					if(j % 2 != 0) { //홀수좌표,홀수좌표 =짝수(흰색)
						if(chess.charAt(j) == 'F') result++; //result를 추가해준다.
					}
				}
			}
		}
		System.out.println(result);
	}

}

 

코드로 나타내면 다음과 같다.

f가 있는걸 어떻게 찾아내나가 문제라서 검색을 했는데 charAt() 를 사용하면 된다는 걸 알게됐다.

charAt() 란?

String으로 받은 문자열 중에서 한 글자만 선택해서 char타입으로 변환해주는 함수이다. 

Scanner로 안녕하세요 를 입력받았을 때 charAt(0) 을 프린트하면 안 이 출력되는 것이다.

위에 사용한 코드를 생각해보면 charAt(j) 자리(=흰색 칸)에 F가 있는지 묻고 있다. 

F가 있는 경우에는 result를 추가해주는 것이다. 

 

 


 

기존 코드블럭이 가독성이 별로인듯 해서 폰트와 테마를 바꾸었는데 글자는 잘 보이지만 주석이 잘 안보이는 문제가 생겼다.

그래서 예전처럼 한줄씩 코드리뷰를 할지 아니면 테마를 포기하고 티스토리 기본 코드블럭을 쓸지 고민이 된다...