백준 1018 - 체스판 다시 칠하기

2020. 2. 10. 23:50·Algorithms/BOJ

https://www.acmicpc.net/problem/1018

 

1018번: 체스판 다시 칠하기

첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.

www.acmicpc.net

문제 설명


N*M 메트릭스에서 임의로 8*8 메트릭스만큼 잘랐을때 다시 칠해야 하는 최소 개수를 구하는 문제이다. 

(단, 문제에서 말한 것처럼 인접한 것은 서로 다른 색을 가지고 있다. 'W','B')

 

 

접근 방식


위 방법은 전형적인 브루트 포스 방식을 사용하면 간단하게 풀이 가능하다.

8*8의 행렬을 두개 준비하고 브루트 포스 방식으로 비교를 하면서 최소값을 찾는다.

 

 

코드


#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>

using namespace std;
int n,m;
int cnt1=0,cnt2=0;
int mini=9876543;
string map[51];
string map1[8] = {	//0,0이 W인경우
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW"
};
string map2[8] = {	//0,0이 B인경우
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB",
        "BWBWBWBW",
        "WBWBWBWB"
};
void bf(int rlen,int clen){
    for(int i=0;i<8;i++){
        for(int j=0;j<8;j++){
            if(map1[i][j]!=map[rlen+i][clen+j]) cnt1++;	//다른 경우 비교
            if(map2[i][j]!=map[rlen+i][clen+j]) cnt2++;
        }
    }
    mini=min(mini,min(cnt1,cnt2));	//최소값 구하기
}
int main(){
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++){
        cin>>map[i];
    }
    int rlen,clen;	//8*8행렬이 row, column으로 이동할수 있는 거리:rlen,cle
    rlen=n-8;clen=m-8;
    for(int i=0;i<=rlen;i++){	//broute force
        for(int j=0;j<=clen;j++){
            cnt1=0;cnt2=0;
            bf(i,j);
        }
    }
    cout<<mini<<"\n";
    return 0;
}

 

 

funny algorithms :0 ~

'Algorithms > BOJ' 카테고리의 다른 글

백준 1504 - 특정한 최단 경로  (0) 2020.02.20
백준 1916 - 최소비용 구하기  (0) 2020.02.18
백준 2309 - 일곱 난쟁이  (0) 2020.02.07
백준 1120 - 문자열  (1) 2020.02.06
백준 1152 - 단어의 개수  (0) 2020.02.06
'Algorithms/BOJ' 카테고리의 다른 글
  • 백준 1504 - 특정한 최단 경로
  • 백준 1916 - 최소비용 구하기
  • 백준 2309 - 일곱 난쟁이
  • 백준 1120 - 문자열
dev.wookii
dev.wookii
Effort Maketh Happiness
  • dev.wookii
    습관처럼
    dev.wookii
  • 전체
    오늘
    어제
    • 분류 전체보기 (295)
      • Language (35)
        • python (13)
        • C++ (22)
      • Kaggle (4)
      • Algorithms (112)
        • BOJ (58)
        • programmers (43)
        • SWExpertAcademy (2)
      • Certification (38)
        • Adsp (0)
        • Sqld (28)
        • 정처기 (9)
        • 빅데이터 분석기사 (0)
      • Data Analysis & ML (6)
      • 금융 & 디지털 (65)
      • CS (32)
        • DB (2)
        • SE (3)
        • Web&JSP (1)
        • Network (11)
        • OS (2)
        • Linux&Unix (6)
        • Server (1)
        • UX,UI (1)
        • 보안 (5)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    2020 KAKAO
    시뮬레이션
    programmers
    Ebay korea #coding test
    funny algorithms
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.wookii
백준 1018 - 체스판 다시 칠하기
상단으로

티스토리툴바