250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 | 29 | 30 | 31 |
Tags
- 데이터통신
- 백준
- 라이브러리
- 단어장
- quizlet
- 초연결사회의 데이터통신과 네트워킹
- React
- 자바스크립트
- 스크롤
- 함수
- 초연결 사회의 데이터통신과 네트워킹
- 자바
- 연습문제
- JavaScript
- prettier-code formatter
- gsap
- Node.js
- java
- JLPT
- 이벤트
- scrolly
- 알고리즘
- 네트워킹
- reactjs code snippets
- ScrollToPlugin
- html
- 한빛아카데미
- Algorithm
- 일본어
- ArrayList
Archives
- Today
- Total
umilove98의 블로그
백준 1018 Java 본문
반응형
첫째 줄의 보드 크기 a,b를 입력을 받아서 해당 크기의 2차원 배열을 생성한다.
생성된 2차원 배열에 아래의 보드 내용을 입력한다.
8x8크기의 보드를 잘라내야 하므로 잘라내는 시작지점은 0,0부터 a-7, b-7까지가 된다.
각 시작 지점부터 8x8만큼을 비교하여 판단하는 함수 judgment를 만들어준다.
8x8만큼을 지정하여 비교해야 하므로 매개변수로 받은 n, m 부터 n+8, m+8까지 진행하며 비교한다.
좌측상단이 W로 시작하는 경우와 B로 시작하는 경우 두 가지가 존재하므로 stand변수를 두 개 만들어 비교하고 일치하지 않는 경우 cnt도 두 개 따로 카운트한다.
한 번의 8x8 순회에서 나온 두 개의 cnt 중 더 작은 값을 현재까지 나온 min 값과 비교하여 최소값을 min 에 저장한다.
이를 반복 후 min값을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static char[][] inputarr;
public static int min = 64;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();
StringTokenizer st = new StringTokenizer(s);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
inputarr = new char[a][b];
for (int i = 0; i < a; i++ ) {
String sr = bf.readLine();
for(int j = 0; j < b; j++) {
inputarr[i][j] = sr.charAt(j);
}
}
for(int i = 0; i < a-7;i++) {
for(int j = 0; j < b-7; j++) {
judgment(i,j);
}
}
System.out.println(min);
}
static void judgment(int n, int m) {
int cnt1 = 0; //W로 시작하는 경우의 비교
int cnt2 = 0; //B로 시작하는 경우의 비교
char stand1 = 'W'; //W로 시작하는 경우의 비교
char stand2 = 'B'; //B로 시작하는 경우의 비교
int small;
for(int i = n; i < n + 8; i++) {
for(int j = m; j < m + 8; j++) {
if(inputarr[i][j] != stand1) {
cnt1++;
}
if(inputarr[i][j] != stand2) {
cnt2++;
}
if(stand1 == 'W') {
stand1 = 'B';
}else {
stand1 = 'W';
}
if(stand2 == 'W') {
stand2 = 'B';
}else {
stand2 = 'W';
}
}
if(stand1 == 'W') { //한 가로열이 끝나고 새로운 열로 넘어가면 B - > W 순서가 아니라 B - > B 순서가 되므로 한번 더 뒤집어 줌
stand1 = 'B';
}else {
stand1 = 'W';
}
if(stand2 == 'W') {
stand2 = 'B';
}else {
stand2 = 'W';
}
}
small = Math.min(cnt1, cnt2);
min = Math.min(min, small);
}
반응형
'algorithm > 백준' 카테고리의 다른 글
백준 1059 Java (0) | 2021.07.22 |
---|---|
백준 1037 Java (0) | 2021.07.22 |
백준 1297 Java (0) | 2021.07.20 |
백준 22193 Java (0) | 2021.07.18 |
백준 21300 Java (0) | 2021.07.18 |