알고리즘🅰/프로그래머스
[프로그래머스] 카펫
개발조각
2023. 3. 6. 17:42
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이번문제는 완전탐색 문제입니다.
해결방안
yellow는 안에, brown은 yellow를 싸매고 있고, brown과 yellow의 개수를 알고 있습니다.
이 말을 brown은 yellow를 싸매는 모양이니 카펫의 크기는 yellow의 가로+2, 세로+2가 되겠죠?
brown 24, yellow 24를 예시를 들자면
yellow 24칸으로 아래와 같이 총 4가지의 사각형 모양을 만들 수 있습니다.
- 1 * 24
- 2 * 12
- 3 * 8
- 4 * 6
이 4가지의 사각형모양의 가로, 세로 각각에 +2를 하고 yellow칸만큼 빼면 아래와 같이 나오고
brown의 값을 찾을 수 있습니다.
- (1+2) * (24+2) - 24 = 54
- (2+2) * (12+2) - 24 = 72
- (3+2) * (8+2) - 24 = 26
- (4+2) * (6+2) - 24 = 24
brown 24, yellow 24일 경우에는
"카펫의 가로길이는 세로 길이와 같거나, 세로 길이보다 길다."라는 조건이 있으니
가로 8, 세로 6이 됩니다.
소스코드
function solution(brown, yellow) {
var answer = [];
for(let i=1; i<=Math.round(yellow/2); i++){
if(!(yellow % i)){
let j= yellow/i;
let rest = (i+2)*(j+2)-yellow;
if(rest === brown){
answer = i>j ? [i+2, j+2] : [j+2, i+2]
break;
}
}
}
return answer;
}
728x90
반응형