[level 3] Title: N으로 표현, Time: 18.34 ms, Memory: 11.3 MB -BaekjoonHub
This commit is contained in:
23
프로그래머스/3/42895. N으로 표현/N으로 표현.py
Normal file
23
프로그래머스/3/42895. N으로 표현/N으로 표현.py
Normal file
@@ -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
|
||||
72
프로그래머스/3/42895. N으로 표현/README.md
Normal file
72
프로그래머스/3/42895. N으로 표현/README.md
Normal file
@@ -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<br/>합계: 100.0 / 100.0
|
||||
|
||||
### 제출 일자
|
||||
|
||||
2025년 03월 06일 21:59:25
|
||||
|
||||
### 문제 설명
|
||||
|
||||
<p>아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.</p>
|
||||
|
||||
<p>12 = 5 + 5 + (5 / 5) + (5 / 5)<br>
|
||||
12 = 55 / 5 + 5 / 5<br>
|
||||
12 = (55 + 5) / 5</p>
|
||||
|
||||
<p>5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.<br>
|
||||
이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.</p>
|
||||
|
||||
<h5>제한사항</h5>
|
||||
|
||||
<ul>
|
||||
<li>N은 1 이상 9 이하입니다.</li>
|
||||
<li>number는 1 이상 32,000 이하입니다.</li>
|
||||
<li>수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.</li>
|
||||
<li>최솟값이 8보다 크면 -1을 return 합니다.</li>
|
||||
</ul>
|
||||
|
||||
<h5>입출력 예</h5>
|
||||
<table class="table">
|
||||
<thead><tr>
|
||||
<th>N</th>
|
||||
<th>number</th>
|
||||
<th>return</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody><tr>
|
||||
<td>5</td>
|
||||
<td>12</td>
|
||||
<td>4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>11</td>
|
||||
<td>3</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h5>입출력 예 설명</h5>
|
||||
|
||||
<p>예제 #1<br>
|
||||
문제에 나온 예와 같습니다.</p>
|
||||
|
||||
<p>예제 #2<br>
|
||||
<code>11 = 22 / 2</code>와 같이 2를 3번만 사용하여 표현할 수 있습니다.</p>
|
||||
|
||||
<p>※ 공지 - 2020년 9월 3일 테스트케이스가 추가되었습니다.</p>
|
||||
|
||||
|
||||
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
|
||||
Reference in New Issue
Block a user