프로그래머스 LEVEL 2(쿼드압축 후 개수 세기)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2022-11-06

  • 해결 방법 :
    • 재귀 형식으로 압축하며 문제 해결
    • 넘겨 받은 array를 4분할하여 분할 부분마다 종료 조건이 될 때까지 재귀 함수 호출
    • 재귀 함수의 시작 부분에서 인자로 넘겨 받은 array가 전부 0이거나 1인 경우 해당하는 정답 배열 증가 및 return
  • 회고 :
    • x
  • 코드

    function solution(arr) {
        const NUMBER = [0, 1];
        const answer = [0, 0];
            
        const compression = (array) => {
            for (const number of NUMBER) {
                if (array.every(row => row.every(e => e === number))) {
                    answer[number]++;
                    return;
                }
            }
                
            const half = array.length / 2,
                top_left = array.splice(0, half),
                top_right = top_left.map(row => row.splice(half)),
                botoom_left = array,
                botoom_right = botoom_left.map(row => row.splice(half));
                
            return [top_left, top_right, botoom_left, botoom_right].map(e => compression(e));
        }
            
        compression(arr);
            
        return answer;
    }
    
  • 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges