-
1018.체스판 다시 칠하기알고리즘/백준 BAEK JOON 2020. 5. 4. 16:27
(*)이번에 풀어볼 문제는 백준의 1018 체스판 다시 칠하기이다.
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
이전에 풀었던 막대기처럼 정해진 비교대상이 있을 경우 비교 기준을 만들어놓고 비교해가는 방법을 사용했다.
1094.막대기
1094 역시 굉장히 쉬운문제이다. 이 문제는 쉽지만 포스팅하는 이유는 문제를 읽으면서 드디어 효율을 동시에 생각하기 시작했다고 느꼈기 때문이다. 이 문제는 막대기를 잘라서 자기가 원하는 X의 길이의 막대기..
xn--vj5b11biyw.kr
하지만.... 푸는 방법은 알겠는데.. 구현을 못했다...
그래서 결국 블로그에서 내 생각과 비슷하게 생각한 분의 풀이를 찾다가 발견하여 그냥 이분의 풀이를 보고 공부하기로 했다...
푸는 방법은 생각해냈는데 이분처럼 구현을 못하는거 보면 아직 멀었다..허허..
심지어 코드를 보고도 이해하는데도 시간이 걸렸다... 너무 헷갈린다...
참고 블로그 글 : https://jaimemin.tistory.com/667
백준 1018번 체스판 다시 칠하기
문제 링크입니다: https://www.acmicpc.net/problem/1018 체스판은 (0,0)에 W가 오는 경우가 있고 B가 오는 경우가 있습니다. 따라서 두 가지 경우의 체스판을 미리 선언해놓고 하나하나 Brute Force 방식으로 비..
jaimemin.tistory.com
< Code 설명 >
#include <iostream> #include <algorithm> using namespace std; #define MAX 50 string w_s[8] = { "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW" }; string b_s[8] = { "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB",}; char map[MAX][MAX]; // 체스판 배열 int n, m; // 입력받을 체스판 크기 변수 int w(int st, int base){ // 시작이 white 일때 int result = 0; // 고쳐야할 갯수 변수 for (int i = st; i < st + 8; i++){ for (int j = base; j < base + 8; j++){ if (map[i][j] != w_s[i-st][j-base]) //기준판은 8x8이므로 result++; } } return result; } int b(int st, int base){ // 시작이 black 일때 int result = 0; // 고쳐야할 갯수 변수 for (int i = st; i < st + 8; i++){ for (int j = base; j < base + 8; j++){ if (map[i][j] != b_s[i-st][j-base]) //기준판은 8x8이므로 result++; } } return result; } int main() { cin >> n >> m; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++) cin >> map[i][j]; // 체스판 입력받음 } int ans = 9999999; for (int i = 0; i + 7 < n; i++){ // 세로의 탐색 가동범위를 정함 for (int j = 0; j + 7 < m; j++) // 가로의 탐색 가동범위를 정함 ans = min(ans,min(w(i,j),b(i,j))); // 최소값을 구함 } cout << ans << "\n"; return 0; }
# 구현에 있어 주의할 점은 비교대상은 8x8이기 떄문에 배열의 인덱스를 잘생각해서 비교해주어야한다.
-> 아무생각없이 비교대상의 인덱스를 따라가면 당연히 배열 범위를 초과하기 때문에 에러가 발생함
반응형'알고리즘 > 백준 BAEK JOON' 카테고리의 다른 글
1138.한 줄로 서기 (0) 2020.05.17 1120.문자열 (0) 2020.05.17 14891.톱니바퀴 (0) 2020.05.01 1057.토너먼트 (0) 2020.05.01 1094.막대기 (0) 2020.04.26 댓글