-
[Javascript] 프로그래머스 카펫알고리즘, 자료구조/프로그래머스 2020. 6. 29. 20:05
문제
https://programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 ��
programmers.co.kr
완전 탐색으로 분류된 문제지만 나는 완전 탐색으로 접근하진 않았다. 이 문제에서 생각해야 될 부분은 yello로 주어진 파라미터가 모두 카펫 안에 들어가야 된다는 것이다.
풀이 과정
function solution(brown, yellow) { let answer = []; // row: 카펫의 가로길이, col: 카펫의 세로길이 // row >= col 이므로, row 선언 동시에 최솟값을 할당하고, col은 이후 할당함 let row = Math.sqrt(brown + yellow), col; // row가 정수이면 정사각형 카펫이므로, 동일한 값을 가로세로에 넣어 반환 if(row % 1 === 0){ return [row, row] // row가 정수가 아니면 정사각형 카펫이 아니므로(row는 col 이상) }else{ // i: 노란색(안쪽) 네모칸의 가로 길이 for(let i = Math.ceil(row) - 2; i <= yellow; i++){ // col: 노란색(안쪽) 네모칸의 세로 길이 col = yellow / i; // 테두리는 한 줄 -> i + 2는 카펫 가로 길이, col + 2는 카펫 세로 길이가 된다 if((i + 2) * (col + 2) === brown + yellow){ return [i + 2, col + 2] } } } }
테스트케이스
'알고리즘, 자료구조 > 프로그래머스' 카테고리의 다른 글
[Javascript] 프로그래머스 큰 수 만들기 (0) 2020.07.03 [Javascript] 프로그래머스 프린터 (0) 2020.06.30 [Javascript] 프로그래머스 H-index (0) 2020.06.26 [Javascript] 프로그래머스 기능 개발 (2) 2020.06.26 [Javascript] 프로그래머스 소수 찾기 (0) 2020.06.23