문제 

https://school.programmers.co.kr/learn/courses/30/lessons/68936

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내가쓴 답

#include <string>
#include <vector>

using namespace std;

void DFS(vector<vector<int>>& arr, int& zero, int& one,int st_row, int st_col, size_t size)
{
	if (size == 1)
	{
		if (arr[st_row][st_col] == 0)
		{
			zero++;
			return;
		}
		else
		{
			one++;
			return;
		}
	}
	int sum = 0;
	for (int i = st_row; i < st_row + size ; i++)
	{
		for (int j = st_col; j < st_col + size ; j++)
		{
			sum += arr[i][j];
		}
	}

	if (sum == 0)
	{
		zero++;
		return;
	}
	if (sum == size*size)
	{
		one++;
		return;
	}

	DFS(arr, zero, one, st_row, st_col, size / 2);
	DFS(arr, zero, one, st_row, st_col + size /2, size / 2);
	DFS(arr, zero, one, st_row + size /2, st_col, size / 2);
	DFS(arr, zero, one, st_row + size /2, st_col + size /2, size / 2);

}

vector<int> solution(vector<vector<int>> arr) {
	vector<int> answer(2,0);
	answer[0] = 0, answer[1] = 0;

	DFS(arr, answer[0], answer[1], 0, 0, arr[0].size());

	return answer;
}
Posted by pi92

블로그 이미지
pi92

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.7
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

최근에 올라온 글

최근에 달린 댓글

글 보관함