반응형
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 |
Tags
- 브루트포스 알고리즘
- 재귀
- 조합론
- 문자열제곱
- 별 찍기
- 구현
- 시뮬레이션
- 임의 정밀도 / 큰 수 연산
- 수학
- 큐
- 큰 수 연산
- 이분 탐색
- 정수론
- 자료 구조
- LeetCode Remove Duplicates from Sorted List in c
- 정렬
- 사칙연산
- KMP알고리즘
- 연결리스트 중복제거
- 문자열
- 다이나믹 프로그래밍
- LeetCode 83 c언어
- Queue
- LeetCode 83번
- 프로그래머스
- 해시를 사용한 집합과 맵
- 유클리드 호제법
- 실패함수
- 연결리스트 정렬
- 스택
Archives
- Today
- Total
hahn
단계별로 풀어보기(브루트 포스 - 체스판 다시 칠하기) 본문
728x90
반응형
1018번: 체스판 다시 칠하기 (acmicpc.net)
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
http://boj.kr/88c09612327e4f2ca1f9bd6583d86a5c
공유 소스 보기
www.acmicpc.net
더보기
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int rowCount, columnCount,
startW, startB, result;
rowCount = sc.nextInt();
columnCount = sc.nextInt();
result = rowCount * columnCount;
String compare = "WBWBWBWB";
String[] arr = new String[rowCount];
for(int i = 0; i < arr.length; i++) {
arr[i] = sc.next();
}
for(int i = 0; i < arr.length - 7; i++) {
for(int k = 0; k < columnCount - 7; k++) {
startW = 0;
startB =0;
for(int j = i; j < i + 8; j++) {
for(int l = k; l < k + 8; l++) {
if(j % 2 == 0 ? compare.charAt(l - k) == arr[j].charAt(l) : compare.charAt(l - k) != arr[j].charAt(l)) {
startW++;
}else {
startB++;
}
}
}
if(result > startW) result = startW;
if(result > startB) result = startB;
}
}
System.out.println(result);
}
}
문제를 읽어보고 음.. 좀 까다롭다고 생각했다.
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
or
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
위와 같은 형태의 체스판을 얻는 게 목적이므로
저걸 원형으로 두고 각 부분과 비교하여
최솟값을 구하면 되겠다 생각했고,
일단 블록을 나누는 것과 원형과 비교하는 것을
구현해야겠다고 결론을 내렸다.
for문으로 나누고 원형 비교는
WBWBWBWB 기준으로 두고
삼항 연산자와 mod 연산을 응용하여 카운트하게 했다.
구현하고 나니 답이 이상하게 나와서 뭐가 문제인 건가 생각해봤는데
for문 순서를 하나 잘못했었다.
중첩 for문 쓰니까 가끔 헷갈리는 경우가 있다 ㅋㅋ;
728x90
반응형
'코딩테스트 연습 > 백준(JAVA)' 카테고리의 다른 글
[백준 - JAVA] 막대기 (0) | 2021.09.14 |
---|---|
단계별로 풀어보기(브루트 포스 - 영화감독 숌) (0) | 2021.09.14 |
단계별로 풀어보기(문자열 알고리즘1 - 광고) (0) | 2021.09.12 |
단계별로 풀어보기(정렬 - 수 정렬하기 2) (0) | 2021.09.12 |
단계별로 풀어보기(정렬 - 수 정렬하기) (0) | 2021.09.12 |