본문 바로가기
기초다지기/JS 코딩테스트

javaScript 노란색과 갈색 격자로 카펫 크기 구하기

by 김빵그 2023. 11. 21.

문제

갈색 격자수 brown 과 노란색 격자수 yellow가 주어질 떄 
저 둘을 이용하여 가능한 카펫의 크기를 찾아내야 한다, 갈색 격자가 테두리를 이루고, 중앙에는 노락색 격자가 채워져있는 상황으로 가로 세로 크기를 순서대로 배열에 담아 리턴

나의 풀이 

function solution(brown, yellow) {
    var total = brown + yellow; 
    for(let i = 1; i < total; i++) {
        if(total % i === 0) {
            const width = total / i;
            const height = i;

            if ((width - 2) * (height - 2) === yellow) {
                return [width, height];
            }
        }
        
    }    
}
  • total 변수에 갈색과 노란색 격자의 수를 합한 값을 저장한다
  • for (1부터 total까지 반복)
    • 조건문 : total % i === 0 (i가 total의 약수일 때만 작동) 
    • 크기 계산 width와 height로 가로 세로의 크기를 계산한다
    • 주어진 노란색 격자의 수와 일치하는지 확인 
    • 참일결우 [width, height] 반환하고 종료

다른 풀이

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

    return [x,i];
}
  • for
    • 갈색 격자 테두리가 최소 1줄 이상이어야 하며 가로 세로 최소 길이가 3이어야함 
    • i를 3부터 시작하여 검사 
    • 갈색과 노란색 격자의 총합을 i로 나눈 값이 가능한 가로 길이의 최대값으로 i를 증가시키며 루프
    • x를 그 값으로 설정하고 해당 yellow 값과 같은지 확인
    • 일치하면 break로 종료