Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AWS
- node배포
- Hill Climbing
- 배포
- 코드
- CS
- computerscience
- 철학
- 알고리즘
- 파이썬
- 문자열처리
- Search Algorithm
- lightsailor
- Simulated Annealing
- 컴퓨터과학
- typescript
- 컴퓨터공학
- node.js
- 문자열
- multer-s3
- Local Search
Archives
- Today
- Total
지식의모듈화
[Level2][Javascript] N으로 표현 본문
DP문제인데, 아직 풀지 못했다.
function solution(N, number) {
var answer = 0;
let DP=[];
DP[N]=1;
DP[0]=2;
for (let i=1; i<N;i++){
DP[i]=i+1;
}
for(let i=N+1; i<=number;i++){
let remain= (i%N);
let a;
if( remain){ /// N =5, i=8 , 1+DP[1]+DP[3]
a=DP[Math.floor(i/N)]+1+DP[remain]
}
else{ // N=5, i=5, 1+DP[1]
a=DP[Math.floor(i/N)]+1
}
DP[i]=Math.min(a, 1+DP[i-5])
}
console.log(DP);
return answer;
}
// N=5
// f(N)=1;
// f(N*0+1)=2
// f(N*0+2)=3 / 5+5/5
// f(3)=4
// f(4)=5
// f[50]= (f[10] +1, f[45]+1)
// f(10)= (f(2)+1, f(5)+1)
// f(2)= f(2)
// function dp(a,N){
// dp(a)
// }
//2022-06-26
function solution(N, number) {
var answer =-1;
let DP=[];
let Q={};
Q[N]=1;
DP[1]= Q; //N1개 사용
// DP[2]={N/N:1, N+N:1, N-N:1, N*N:1, N+N:1 }; // N/N, N+N
// DP[3]=
for (let i=2; i<=8;i++){
let Q={};
let NNs=0;
for (let k=0; k<i;k++){
NNs+=Math.pow(10,k)*N;
}
Q[NNs]=1;
for (let k=1; k<=i/2;k++){
let keyA= Object.keys(DP[i-k]).map(e=>Number(e));
let keyB = Object.keys(DP[k]).map(e=>Number(e));
for(let i=0; i<keyA.length;i++){
for(let j=0; j<keyB.length;j++){
let sum= keyA[i]+keyB[j]
let dif= Math.abs(keyA[i]-keyB[j])
let mul= keyA[i]*keyB[j]
let div = Math.floor(keyA[i]/keyB[j])
if (sum<=32000) Q[sum]=1;
if (dif<=32000) Q[dif]=1;
if (mul<=32000) Q[mul]=1;
if (div<=32000) Q[div]=1;
}
}
}
// keys.forEach((e,i)=>{
// e=Number(e)
// Q[e+N]=1;
// if((e-N)>0)Q[e-N]=1;
// Q[Math.floor(e/N)]=1;
// Q[e*N]=1;
// })
DP[i]=Q;
}
// console.log(DP)
for (let i=1; i<DP.length;i++){
if(DP[i][number]>0){
answer=i;
break;
}
}
return answer;
}
풀었다... DP array안에 들어갈 것들을 잘 정의하자.. bottom-up 접근은 맞았는데 DP[i] 를 숫자 i를 만들 때 필요한 최소 number의 개수로 정의해서 잘 풀 수 없었다.
'PS > 프로그래머스' 카테고리의 다른 글
[!][Level2][Javascript] 조이스틱 (0) | 2022.06.27 |
---|---|
[Level2][Javascript ][단속카메라] (0) | 2022.06.26 |
[Level2][Javascript] 이중우선순위큐 (0) | 2022.06.25 |
[Level2][Javascript] 디스크 컨트롤러 (0) | 2022.06.25 |
[Level2][Javascript] 섬 연결하기 (0) | 2022.06.24 |