https://school.programmers.co.kr/learn/courses/30/lessons/68936
설명만 봐도 재귀라서 이상한 생각은 안했다.
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
private List<int> answer = new List<int>();
public void Zip(int[,] arr, int x, int y, int len)
{
if (len == 1)
{
answer.Add(arr[x, y]);
return;
}
int num = arr[x, y];
for (int i = x; i < x + len; i++)
{
for (int j = y; j < y + len; j++)
{
if (arr[i, j] != num)
{
int newLen = len / 2;
Zip(arr, x, y, newLen);
Zip(arr, x, y + newLen, newLen);
Zip(arr, x + newLen, y, newLen);
Zip(arr, x + newLen, y+ newLen, newLen);
return;
}
}
}
answer.Add(num);
}
public int[] solution(int[,] arr) {
Zip(arr, 0, 0, arr.GetLength(0));
return new int[] {answer.Count(i => i == 0), answer.Count(i => i == 1)};
}
}
그냥 마음 가는대로 짰음.