diff --git a/프로그래머스/3/42895. N으로 표현/N으로 표현.py b/프로그래머스/3/42895. N으로 표현/N으로 표현.py new file mode 100644 index 0000000..d664d1c --- /dev/null +++ b/프로그래머스/3/42895. N으로 표현/N으로 표현.py @@ -0,0 +1,23 @@ +def solution(N, number): + # dp[i]는 N을 i번 사용해서 만들 수 있는 숫자들의 집합 + dp = [set() for _ in range(9)] + + for i in range(1, 9): + # N을 i번 이어 붙인 수 (예: N=5, i=3이면 555) + dp[i].add(int(str(N) * i)) + + # 가능한 경우의 수: j와 i-j로 나누어 연산 + for j in range(1, i): + for a in dp[j]: + for b in dp[i - j]: + dp[i].add(a + b) + dp[i].add(a - b) + dp[i].add(a * b) + if b != 0: + dp[i].add(a // b) + + # 목표 number가 현재 집합에 포함되어 있으면, i 반환 + if number in dp[i]: + return i + + return -1 diff --git a/프로그래머스/3/42895. N으로 표현/README.md b/프로그래머스/3/42895. N으로 표현/README.md new file mode 100644 index 0000000..3cd4642 --- /dev/null +++ b/프로그래머스/3/42895. N으로 표현/README.md @@ -0,0 +1,72 @@ +# [level 3] N으로 표현 - 42895 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42895) + +### 성능 요약 + +메모리: 11.3 MB, 시간: 18.34 ms + +### 구분 + +코딩테스트 연습 > 동적계획법(Dynamic Programming) + +### 채점결과 + +정확성: 100.0
합계: 100.0 / 100.0 + +### 제출 일자 + +2025년 03월 06일 21:59:25 + +### 문제 설명 + +

아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.

+ +

12 = 5 + 5 + (5 / 5) + (5 / 5)
+12 = 55 / 5 + 5 / 5
+12 = (55 + 5) / 5

+ +

5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.
+이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.

+ +
제한사항
+ + + +
입출력 예
+ + + + + + + + + + + + + + + + + + +
Nnumberreturn
5124
2113
+
입출력 예 설명
+ +

예제 #1
+문제에 나온 예와 같습니다.

+ +

예제 #2
+11 = 22 / 2와 같이 2를 3번만 사용하여 표현할 수 있습니다.

+ +

※ 공지 - 2020년 9월 3일 테스트케이스가 추가되었습니다.

+ + +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file