티스토리 뷰
title: "N으로 표현"
category: 프로그래머스[Level-3]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-02-03"
문제 링크
C++
#include <string>
#include <vector>
#include <set>
using namespace std;
int solution(int N, int number) {
int answer = -1;
// DP
set<int> nums[8];
int num=0;
for(int i=0; i<8; i++){
// init
num=num*10+N; // 5, 55, 555
nums[i].insert(num);
for(int j=0; j<i; j++){
for(int num1: nums[j]){
for(int num2: nums[i-j-1]){ // i-(j+1)
nums[i].insert(num1+num2); // '+'
nums[i].insert(num1-num2); // '-'
nums[i].insert(num1*num2); // '*'
if(num2!=0) nums[i].insert(num1/num2); // '/'
}
}
}
if(nums[i].count(number)){
// number가 있을 경우
answer=i+1;
break;
}
}
return answer;
}
JavaScript
function solution(N, number) {
var answer = -1;
// DP
const nums = [];
let num = 0;
for (let i = 0; i < 8; i++) {
num = num * 10 + N; // 5, 55, 555
const set = new Set([num]);
nums.push(set);
for (let j = 0; j < i; j++) {
for (const num1 of nums[j]) {
for (const num2 of nums[i - j - 1]) {
// i-(j+1)
nums[i].add(num1 + num2); // '+'
nums[i].add(num1 - num2); // '-'
nums[i].add(num1 * num2); // '*'
if (num2 !== 0) nums[i].add(num1 / num2); // '/'
}
}
}
if (nums[i].has(number)) {
// number가 있을 경우
answer = i + 1;
break;
}
}
return answer;
}
728x90
반응형
'Programmers Solutions > Level-3' 카테고리의 다른 글
[프로그래머스] 풍선 터트리기 (0) | 2021.02.05 |
---|---|
[프로그래머스] 2 x n 타일링 (0) | 2021.02.05 |
[프로그래머스] 추석 트래픽 (0) | 2021.02.05 |
[프로그래머스] 징검다리 건너기 (0) | 2021.02.05 |
[프로그래머스] 불량 사용자 (0) | 2021.02.04 |
댓글