티스토리 뷰
BOJ 1018번 체스판 다시 칠하기
브루트 포스, 시뮬레이션
- (0,0)이 'W' 로 시작하는 경우와 'B'로 시작하는 경우로 나눈다.
1번째 경우 : 짝수행의 짝수열에 'W' 홀수열에 'B'가, 홀수행의 짝수열에 'B', 홀수열에 'W'
2번째 경우 : 짝수행의 짝수열에 'B' 홀수열에 'W'가, 홀수행의 짝수열에 'W', 홀수열에 'B'
1번째 경우에 맞는 위치에 있으면 W1, B1 1씩 증가시키고
2번째 경우에 맞는 위치에 있으면 W2, B2 1씩 증가시킨다.
W1 + B1 와 W2 + B2 의 값을 비교해 더 작은 값을 답으로 갱신한다.
*190322
생각해보니 그냥 W1, B1, W2, B2 나누지 않고
1번째 경우 a++, 2번째 경우 b++ 한 후 min(a,b) 하면 된다 ㅎ ㅎ;;
설명 시작
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 32 33 34 | #include <iostream> #include <algorithm> #define FOR(i,a,b) for(int i = a; i < b; i++) #define MAX 2147000000 using namespace std; char arr[51][51]; int main() { int N, M, ans = MAX; cin >> N >> M; FOR(i, 0, N) FOR(j, 0, M) cin >> arr[i][j]; FOR(x, 0, N - 7) FOR(y, 0, M - 7) { int W1 = 0, W2 = 0, B1 = 0, B2 = 0; FOR(i, x, x + 8) { if (i % 2 == 0) { FOR(j, y, y + 8) { if (j % 2 == 0 && arr[i][j] == 'W') W1++; else if (j % 2 == 1 && arr[i][j] == 'B') B1++; else if (j % 2 == 0 && arr[i][j] == 'B') B2++; else W2++; } } else { FOR(j, y, y + 8) { if (j % 2 == 0 && arr[i][j] == 'B') B1++; else if (j % 2 == 1 && arr[i][j] == 'W') W1++; else if (j % 2 == 0 && arr[i][j] == 'W') W2++; else B2++; } } } ans = min(ans, min(W1 + B1, W2 + B2)); } cout << ans; } | cs |
반응형
'백준 온라인 저지' 카테고리의 다른 글
190205 BOJ 2094번 강수량 (0) | 2019.03.17 |
---|---|
190316 BOJ 1992번 쿼드트리 (0) | 2019.03.16 |
190305 BOJ 9370번 미확인 도착지 (0) | 2019.03.05 |
190301 BOJ 16985번 Maaaaaaaaaze (0) | 2019.03.02 |
190224 BOJ 1406번 에디터 (0) | 2019.02.25 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- #패스트캠퍼스 #프로그래밍대학생서포터즈 #올인원패키지 #컴퓨터공학 #성공하는프로그래밍공부법
- 개발자 취업
- 운영체제
- c언어
- 코딩 면접
- 패스트캠퍼스
- Fast Campus
- 프로그래밍 온라인 강의
- 자료구조
- 올인원 패키지
- 컴퓨터공학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함