[백준 1018] 체스판 다시 칠하기 (완전탐색) - java 자바
2022. 3. 7. 05:00ㆍ네카라쿠배 취준반 - 프로그래머스 문제 풀이
0. 자세한 설명은 YouTube 영상으로
1-1. 완전탐색 Solution
import java.util.Scanner;
class Main {
public static int getSolution(int startRow, int startCol, String[] board) {
String[] orgBoard = { "WBWBWBWB", "BWBWBWBW" };
int whiteSol = 0;
for (int i = 0; i < 8; i++) {
int row = startRow + i;
for (int j = 0; j < 8; j++) {
int col = startCol + j;
if (board[row].charAt(col) != orgBoard[row % 2].charAt(j)) whiteSol++;
}
}
return Math.min(whiteSol, 64 - whiteSol);
}
public static void main(String[] args) {
// 0. input 받기
Scanner sc = new Scanner(System.in);
int row = sc.nextInt();
int col = sc.nextInt();
sc.nextLine();
String[] board = new String[row];
for (int i = 0; i < row; i++) board[i] = sc.nextLine();
// 1. 체스판 자르기
int sol = Integer.MAX_VALUE;
for (int i = 0; i <= row - 8; i++) {
for (int j = 0; j <= col - 8; j++) {
// 2. 현 체스판의 최소 비용 구하기
int curSol = getSolution(i, j, board);
// 3. 전체 최적의 값과 비교하여 갱신하기
if (sol > curSol) sol = curSol;
}
}
System.out.println(sol);
sc.close();
}
}
- YouTube 영상에 자세한 내용을 정리했으니 참고하세요.
'네카라쿠배 취준반 - 프로그래머스 문제 풀이' 카테고리의 다른 글
[프로그래머스] 분수의 덧셈 문제 풀이(코딩테스트 입문 Lv. 0) - 파이썬 python (0) | 2022.12.08 |
---|---|
[프로그래머스] 타겟넘버 문제 풀이(DFS BFS 재귀함수 Lv. 2) - java 자바 (0) | 2022.03.30 |
[2021 카카오 코딩테스트] 키패드 누르기 - 자바 java (4) | 2022.01.21 |
[2021 카카오 코딩테스트] 순위 검색 - 자바 java (0) | 2021.12.29 |
[2021 카카오 코딩테스트] 메뉴 리뉴얼 - 파이썬 (0) | 2021.12.27 |