1️⃣서론
프로그래머스 level2 문제 카펫
입니다.
Javascript
를 이용하여 해결하였습니다.
2️⃣문제 설명
3️⃣풀이
이 문제는 완전탐색을 활용하여 답을 찾는 문제입니다. 노란색의 타일로 갈색의 타일을 찾는다고 접근을 하는게 중요한 문제였던 것 같습니다.
노란색 타일이 8개라면 우리는 노란색 타일을 1*8
, 2*4
, 이런식으로 직사각형으로 배치할 수 있습니다. 그렇다면 갈색이 노란색 타일을 감싸기 위해서 몇개가 필요한지 구하고 그 구한 것을 brown
의 값과 비교하여 답을 구하는 문제였습니다.
4️⃣ 내가 푼 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const solution = (brown, yellow) => {
const answer = [];
//완전탐색
for (let i = 1; i <= yellow; i++) {
//노란색의 직사각형 몇 곱하기 몇인지를 구하기 위해 0으로 나뉘어떨어지지 않으면 버린다.
if (yellow % i !== 0) {
continue;
}
//노란색이 2*4로 되어있다면 가로*2 세로*2 양 귀퉁이 4개를 더한값이 brown과 같으면 그것이 답이다!
if ((yellow / i) * 2 + i * 2 + 4 === brown) {
answer.push(yellow / i + 2, i + 2);
break;
}
}
return answer;
};
5️⃣ 결론
완전탐색이었다는게 문제에 써져있어서 쉽게 풀 수 있던 문제였던 것 같습니다. 아직 문제를 보고 이게 어떤 자료구조를 써야하고 어떤 알고리즘을 써야하는지 잘 생각이 안나는데 이 부분에 대해서 좀더 훈련해야겠다는 생각을 했습니다.
6️⃣ 마치며..
질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️