2630번: 색종이 만들기
첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.
www.acmicpc.net
#include <iostream>
using namespace std;
int arr[128][128];
int white =0;
int blue = 0;
void slice(int start_col, int start_row, int size){
int f = arr[start_col][start_row];
for(int i=start_col; i<start_col+size; i++){
for(int j=start_row; j<start_row+size; j++){
if(f != arr[i][j] ) {
slice(start_col, start_row, size/2);
slice(start_col, start_row+size/2, size/2);
slice(start_col+size/2, start_row, size/2);
slice(start_col+size/2, start_row+size/2, size/2);
return;
}
}
}
if(f == 0) {
white++;
return;
}
else if( f == 1) {
blue++;
return;
}
}
int main()
{
int n;
cin >> n;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> arr[i][j];
}
}
slice(0, 0, n);
cout << white << "\n";
cout << blue << "\n";
return 0;
}
아무리 봐도 문제점을 모르겠어요
출력이 이렇게 나와요...
...
와 할렐루야
진짜 엄청 고민을 많이 했는데요....
slice 재귀 부를때
slice(start_col+size/2, start_row, size/2);
slice(start_col+size/2, start_row+size/2, size/2);
이거 두개를 복붙하고 똑같이 쓴 거 있죠..
발견하고 수정하니 맞았네요
..^^v
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 2750번 C++] 수 정렬하기 (0) | 2023.09.26 |
---|---|
[백준 2447번 C++] 별 찍기 - 10 (0) | 2023.09.21 |
[백준 11729번 C++] 하노이 탑 이동 순서 (0) | 2023.09.21 |
[백준 1914번 C++] 하노이 탑 (0) | 2023.09.21 |
[백준 17478번 C++] 재귀함수가 뭔가요? (1) | 2023.09.21 |