Programmers 카펫, Javascript

cptkuk91·2022년 9월 21일
1

Algorithm

목록 보기
103/161

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42842?language=javascript

제한 사항

  • 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
  • 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
  • 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

코드

function solution(brown, yellow) {
	let result = [];
    
    let sum = brown + yellow;
    
    for(let height = 3; height < brown; height++){
    	if(sum % height === 0){
        	weight = sum / height;
            
            if((height - 2) * (weight - 2) === yellow){
            	result = [height, weight];
            }
        }
    }
    return result;
}	

코드 풀이

우선 카펫의 최소 높이는 3입니다. 3 미만으로는 카펫을 만들 수 없습니다.
따라서 (height - 2) * (weight - 2) === yellow 라면 문제가 원하는 결과값을 찾은 것입니다.

요렇게 보면 더 쉽게 문제를 이해할 수 있습니다.

위 문제는 코드 작성보다 세로의 길이 값이 3이라는 것을 알 수 있어야 하고, 공식 (height - 2) * (weight - 2) === yellow에 대한 이해가 필요합니다.

-2를 하는 이유는 각 사이드가 밤색이기 때문입니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글