프로그래머스 #7

노태경·2021년 7월 6일
0

프로그래머스

목록 보기
7/11

완전탐색 - 카펫


테두리 넓이 brown
노란 넓이 yellow 가 주어질 때 상자 크기 구하기

yellow의 약수를 구해야 함
brown 개수를 검증해서 나온 공약수의 값에 각 +2한 값이 답임
어떻게 검증하나?
구한 전체크기 - yellow의 크기 = brown의 크기여야 함

brown yellow
24 24

24의 약수
width >= height
6 > 4 >> 64 >> width +2, height +2 86 48-24 = 24 >> brown의 개수
8 > 3 >> 83 >> 105 >> 50 - 24 = 26
12 > 2 >> 122 >> 144 = 56 - 24 = 32
24 > 1 >> 241 >> 263 = 78 - 24 = 54

function solution(brown, yellow) {
    const result = [];
    
    for(let i = 1; i * i <= yellow; i++) {
        const row = [];
        if (yellow % i == 0) {
            if (i * i < yellow) {
                row.push(yellow/i);
            } 
            row.push(i)
            result.push(row);
        } 
    }
    
    for(let el of result) {
        const width = el[0] + 2;
        const height = el.length === 1 ? el[0] + 2 : el[1] + 2;
        const size = width * height;
        
        if(size - brown === yellow){
            return [width, height];
        }        
    }

}

다른 사람들의 풀이를 보고 깨달은 점
사실 brown+yellow의 약수를 구했으면 훨씬 간단함 ㅋㅋ

정렬 - K번째 수

쉬어가는 부분..

function solution(array, commands) {
    const result = [];
    for(let [i, j, k] of commands){
        const sliced = array.slice(i-1, j).sort((a,b)=>a-b);
        result.push(sliced[k-1]);
    }
    
    return result;
}

profile
개발자 공부 일기😉

0개의 댓글

관련 채용 정보