본문 바로가기
CS/알고리즘

[완전탐색] PGS lv2. 카펫

by westpearl 2025. 9. 7.
728x90
반응형
SMALL


오늘부터 이직 준비를 시작할 예정이라 코테를 풀어봤다. 
아마 내기억에 저번에 못풀었던 문제인 것 같은데, 어거지로 풀었다..ㅠㅠ 

완전탐색도 조금이라도 더 효율적으로 풀어야할 것 같아 다른 사람이 푼 풀이를 확인해본다.
1. 내가 푼 풀이 

/*
- 중앙: 노란색으로 칠해져있고/ 테두리 1줄은 갈색으로 칠해져있음
- 카펫의 노란색과, 갈색으로 칠해진 격자개수는 기억 , 전체카펫크기는 기억X
- 전체크기는 무조건 yellow 약수보다 커야함 
*/
function solution(brown, yellow) {
    var answer = [];
    let count = brown + yellow
    const divides = [];
    let divideNum = 1;   
    while(divideNum <=count ){
        if( count % divideNum ===0){
            divides.push(divideNum);
        }
        divideNum+=1;
    }
    divideNum =1;
    
    const yellowDivides = [];
    while(divideNum<=yellow){
         if( yellow % divideNum ===0){
            yellowDivides.push(divideNum);
        }
        divideNum+=1;
    }

    divides.forEach((x)=>{
        const a = x;
        const b = count/x;
        const existed  = yellowDivides.some((n)=>n===a-2) &&  yellowDivides.some(n=>n===b-2);
        if(existed && a>2 && b>2){
            answer = [a,b];  
        }  
    })
    
    
    return answer;
}

 

2. 다른사람의 풀이 

function solution(brown, red) {
    var answer = [];
    for (var i = 3; i <= (brown+red)/i; i++) {
        var x = Math.floor((brown+red)/i);
        if( (x-2)*(i-2)=== red) {
            break;
        }
    }

    return [x,i];
}

 

 

내가 저렇게 길게 푼걸 한 for문으로 해결하셨네,, 이해가 간다. 

전체크기의 row,col은 무조건 3이상이어야하기때문에 for문으로 찾으면서 안쪽 yellow 격자의 크기를 바로 비교하면 하나의 포문으로 찾을수있네,, 

 

오늘의 수확 : 저번에 못풀었던 문제를 풀었음.

LIST