사용자 도구

사이트 도구


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()

토론

댓글을 입력하세요:
H S F T F
 
ps/problems/boj/2287.txt · 마지막으로 수정됨: 2022/07/05 08:23 저자 teferi