[JavaScript] N으로 표현하기
2022. 7. 20. 22:48ㆍAlgorithm/프로그래머스
level : 3
문제 링크 : N으로 표현하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
My Solution
function solution(N, number) {
let answer = 0;
let arr = [];
for(let i = 1; i < 9; i++){
let temp = [];
temp.push(Number(N.toString().repeat(i)));
if(arr.length>0){
for(let j = 0; j < i-1; j++){
for(item1 of arr[j]){
for(item2 of arr[arr.length-1-j]){
temp.push(Number(item1+item2));
temp.push(Number(item1-item2));
temp.push(parseInt(item1*item2));
if(item2!==0)
temp.push(parseInt(item1/item2));
}
}
}
}
if(temp.includes(number)){
answer = i;
break;
}
arr.push(temp);
}
return answer === 0 ? -1 : answer;
}
풀이방법
arr라는 배열에는 배열을 집어 넣을 예정이다.
사칙연산 횟수별로 차례로 배열이 push된다.
최솟값이 8초과일 경우 -1을 return해야하기에 1부터 8까지의 사용만 계산한다.
그리하여 N이 8번 반복될 때까지만 for문을 한다. <= N이 한번 반복하면 N, 2번 반복하면 NN으로 취급합니다.
처음에는 N이 반복된 횟수의 수를 temp라는 배열에 집어 넣고 arr에 있는 배열에서 i보다 작은 연산횟수들 2개를 더하여 i가 되는 배열들에 있는 값들을 이용하여 모두 사칙연산을 한다. 이때, 나누기에서 나누는 값이 0 이면 NaN이 생기니 0이 아닌 값만 넣는다.
느낀점
7월 18일에 1차 시도를 하였다. 하지만 실패하였다.
처음에 시도했을 때에는 number만큼 배열을 만들어서 DP를 사용했었으나 이내에 틀렸다는 것을 알게 되었다.
그리하여 7월 20일에 재도전을 하였고 처음부터 다시 풀었다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [JavaScript] 부족한 금액 계산하기 (0) | 2022.08.01 |
|---|---|
| [JavaScript] 2016년 (0) | 2022.07.20 |
| [JavaScript] 짝지어 제거하기 (0) | 2022.07.15 |
| [JavaScript] 기능개발 (0) | 2022.07.14 |
| [JavaScript] [1차] 추석 트래픽 (0) | 2022.07.14 |