㊙️

실전문제풀이 - N으로 표현

 
 
 
notion image
맨처음에는 5로만 구성된 한개의 원소
n = 2 : 55와 사칙연산으로 만든 5+5, 5-5, 5*5, 5/5
n = 3 : 555와 이전 n=2에서 사칙연산으로 만든 항을 이용해서 (5+5)+5, (5-5)+5, (5*5)+5, (5/5)+5 이렇게 뒤에다가 +5, -5, *5, /5만 붙여주면 총 21개가 나올 걸 예상할 수 있다. 개수는 21개겠지만 연산된 값을 기준으로 중복된 값은 필요가 없으므로 Set으로 제거해줄 것이다.
→ 즉 이전 항의 값들을 갖고 있다가 그대로 사용하므로 DP문제이다.
 
5, 55, 555,,, 같은 것은 padStart()메서드로 만들 수 있다.
notion image
i가 1이면 N을 i를 반복해서 붙여준다.
N = 5 : s[1]에 "5" s[2]에 "55" ,,,
 
나머지는 무시할 것이니 Math.floor()를 썼다.
notion image
 
연산의 for문은 이해하기 힘들 수도 있는데 j번째 배열과 i-j번째 배열의 원소가 만나야만 i개의 N을 사용한 연산이 된다는 것을 이해하면 된다. 아래를 보면 55, 55를 각각 가진 배열의 연산이거나 555, 5를 각각 가진 배열을 연산해서 5가 4개 존재하는 연산만을 뽑아내는 것을 알 수 있다.
즉, 4를 구하기 위해 1개, 3개로 연산해 만든 배열을 사용하거나 3개, 1개로 연산해 만든 배열을 사용하거나, 2개, 2개로 연산해 만든 배열을 사용하면 연산에 사용된 숫자의 개수는 4로 맞춰줄 수 있는 것이다.
notion image
아래 1, 2, 1은 j, i, i - j를 뜻하는데 i가 2일 때를 구하려고 1, 1 인덱스의 배열을 사용하고,
i가 3일 때는 1, 2나 2, 1을 사용한다.
notion image