[프로그래머스/Javascript] 카펫

알고리즘

Posted by Kyun2da on July 9, 2020

1️⃣서론

프로그래머스 level2 문제 카펫입니다. Javascript를 이용하여 해결하였습니다.

2️⃣문제 설명

카펫1 카펫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️⃣ 마치며..

질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️