File tree Expand file tree Collapse file tree 2 files changed +122
-0
lines changed
Expand file tree Collapse file tree 2 files changed +122
-0
lines changed Original file line number Diff line number Diff line change 1+ import java .util .*;
2+
3+ class Solution {
4+
5+ public int solution (int N , int number ) {
6+ ArrayList <Set <Integer >> dp = new ArrayList <>();
7+
8+ // 1~8까지만
9+ for (int i = 0 ; i < 9 ; i ++){
10+ dp .add (new HashSet <>());
11+ }
12+ for (int i = 1 ; i < 9 ;i ++){
13+ Set <Integer > currentSet = dp .get (i );
14+
15+ StringBuilder stringBuilder = new StringBuilder ();
16+ // N을 이어 붙이기
17+ for (int j = 0 ; j < i ;j ++){
18+ stringBuilder .append (N );
19+ }
20+ currentSet .add (Integer .parseInt (stringBuilder .toString ()));
21+
22+ // 사칙연산을 통해 추가
23+ for (int j = 1 ;j < i ; j ++){
24+ int k = i - j ;
25+
26+ Set <Integer > setK = dp .get (k );
27+ Set <Integer > setJ = dp .get (j );
28+
29+ for (int num1 : setK ){
30+ for (int num2 : setJ ) {
31+ currentSet .add (num1 + num2 );
32+ currentSet .add (num1 - num2 );
33+ currentSet .add (num1 * num2 );
34+ if (num2 != 0 ){
35+ currentSet .add (num1 / num2 );
36+ }
37+ }
38+ }
39+ }
40+
41+ // dp에서 number를 찾아서 반환
42+ if (currentSet .contains (number )){
43+ return i ;
44+ }
45+ }
46+
47+ return -1 ;
48+ }
49+
50+ }
Original file line number Diff line number Diff line change 1+ # [ level 3] N으로 표현 - 42895
2+
3+ [ 문제 링크] ( https://school.programmers.co.kr/learn/courses/30/lessons/42895 )
4+
5+ ### 성능 요약
6+
7+ 메모리: 82.6 MB, 시간: 23.65 ms
8+
9+ ### 구분
10+
11+ 코딩테스트 연습 > 동적계획법(Dynamic Programming)
12+
13+ ### 채점결과
14+
15+ 정확성: 100.0<br />합계: 100.0 / 100.0
16+
17+ ### 제출 일자
18+
19+ 2025년 08월 31일 10:16:28
20+
21+ ### 문제 설명
22+
23+ <p >아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.</p >
24+
25+ <p >12 = 5 + 5 + (5 / 5) + (5 / 5)<br >
26+ 12 = 55 / 5 + 5 / 5<br >
27+ 12 = (55 + 5) / 5</p >
28+
29+ <p >5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.<br >
30+ 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.</p >
31+
32+ <h5 >제한사항</h5 >
33+
34+ <ul >
35+ <li >N은 1 이상 9 이하입니다.</li >
36+ <li >number는 1 이상 32,000 이하입니다.</li >
37+ <li >수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.</li >
38+ <li >최솟값이 8보다 크면 -1을 return 합니다.</li >
39+ </ul >
40+
41+ <h5 >입출력 예</h5 >
42+ <table class =" table " >
43+ <thead><tr>
44+ <th >N</th >
45+ <th >number</th >
46+ <th >return</th >
47+ </tr >
48+ </thead >
49+ <tbody><tr>
50+ <td >5</td >
51+ <td >12</td >
52+ <td >4</td >
53+ </tr >
54+ <tr >
55+ <td >2</td >
56+ <td >11</td >
57+ <td >3</td >
58+ </tr >
59+ </tbody >
60+ </table>
61+ <h5 >입출력 예 설명</h5 >
62+
63+ <p >예제 #1<br >
64+ 문제에 나온 예와 같습니다.</p >
65+
66+ <p >예제 #2<br >
67+ <code >11 = 22 / 2</code >와 같이 2를 3번만 사용하여 표현할 수 있습니다.</p >
68+
69+ <p >※ 공지 - 2020년 9월 3일 테스트케이스가 추가되었습니다.</p >
70+
71+
72+ > 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
You can’t perform that action at this time.
0 commit comments