-
[프로그래머스 Level 2] 카펫 (JavaScript)Coding Test/JavaScript 2024. 11. 4. 17:44
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42842
입출력 예
brown yellow return 10 2 [4, 3] 8 1 [3, 3] 24 24 [8, 6] 풀이
function solution(brown, yellow) { let sum = brown + yellow; for(let height = 3; height <= brown; height++) { if(sum % height === 0) { let width = sum / height; if((width - 2) * (height - 2) == yellow) { return [width, height]; } } } }
solution 함수는 두 개의 매개변수를 받는다. 이는 각각 갈색 타일과 노란색 타일의 개수를 나타낸다.
sum 변수를 생성하여 전체 타일의 개수를 계산한다.
문제를 생각해 보았을 때, 직사각형의 최소 높이가 3이어야 하고,
높이는 갈색 타일의 수보다 작아야하기 때문에 이렇게 설정하였다.
다음으로는 if문을 활용해 현재 높이가 전체 타일의 개수로 나누어 떨어지는지를 확인했다.
다음으로는 width 변수를 계산하여 현재 높이에 대한 가로 길이를 계산했다.
문제의 특성 상 내가 생각한 로직은 이러하다.
갈색 카펫의 가로 길이 = 노란색 카펫의 가로 길이 + 2
갈색 카펫의 세로 길이 = 노란색 카펫의 세로 길이 + 2이후, 계산된 width와 height에서 2를 빼고 곱한 결과가 노란색 타일의 수와 같은지 확인했다.
이유는, width - 2와 height - 2는 갈색 타일이 가장자리 둘레를 형성하기 때문에
내부의 노란색 타일의 가로와 세로 길이를 계산하였다.
조건이 만족된다면 return문을 통해 width와 height를 배열 형태로 반환하였다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 2] 멀리 뛰기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 귤 고르기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 숫자의 표현 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] N개의 최소공배수 (JavaScript) (0) 2024.11.04 [프로그래머스 Level 2] 올바른 괄호 (JavaScript) (0) 2024.11.04