ps:problems:boj:2287
모노디지털 표현
| ps | |
|---|---|
| 링크 | acmicpc.net/… |
| 출처 | BOJ |
| 문제 번호 | 2287 |
| 문제명 | 모노디지털 표현 |
| 레벨 | 골드 2 |
| 분류 |
DP |
| 시간복잡도 | O(n^2*m*10^m) |
| 인풋사이즈 | n<=9, m<=8 |
| 사용한 언어 | Python |
| 제출기록 | 31352KB / 88ms |
| 최고기록 | 72ms |
| 해결날짜 | 2022/01/16 |
| 태그 | |
풀이
- N으로 표현와 같은 문제. 풀이는 그쪽 참고. 코드는 조금 더 다듬었다.
코드
"""Solution code for "BOJ 2287. 모노디지털 표현".
- Problem link: https://www.acmicpc.net/problem/2287
- Solution link: http://www.teferi.net/ps/problems/boj/2287
"""
import sys
MAX = 8
def main():
K = sys.stdin.readline().rstrip()
dp = []
for i in range(1, MAX + 1):
dp_new = {int(K * i)}
for dp1, dp2 in zip(dp, reversed(dp)):
for n1 in dp1:
for n2 in dp2:
dp_new.update((n1 + n2, n1 - n2, n1 * n2))
if n2 != 0:
dp_new.add(n1 // n2)
dp.append(dp_new)
n = int(sys.stdin.readline())
for _ in range(n):
a = int(sys.stdin.readline())
try:
print(next(i + 1 for i, dp_i in enumerate(dp) if a in dp_i))
except StopIteration:
print('NO')
if __name__ == '__main__':
main()
ps/problems/boj/2287.txt · 마지막으로 수정됨: 2022/07/05 08:23 저자 teferi

토론