[백준] 16922번 로마 숫자 만들기

거북이·2023년 1월 21일
0

백준[실버3]

목록 보기
46/92
post-thumbnail

💡문제접근

  • "실제 로마 숫자에서는 IX는 9를 의미하지만, 이 문제에서는 11을 의미한다." 이 부분에서 찾을 수 있는 것은 로마 숫자를 우리가 사용하는 아라비아 숫자로 변환할 때 앞에서부터 더하는 방식이라는 것이다.
  • 또한 이 문제에서 주어진 조건으로 "순서는 신경쓰지 않는다."는 부분이다. 중복해서 고르되 순서는 신경쓰지 않고 만약 변환한 숫자가 리스트에 포함되어있다면 그 수는 넣지 않으면 된다. 따라서 이 문제를 풀 때 중복조합을 이용해서 해결하면 된다.

💡코드(메모리 : 30616KB, 시간 : 48ms)

from itertools import combinations_with_replacement

arr = ["I", "V", "X", "L"]
N = int(input())

li = []
for i in combinations_with_replacement(arr, N):
    result = 0
    for j in range(len(i)):
        if i[j] == "I":
            result += 1
        elif i[j] == "V":
            result += 5
        elif i[j] == "X":
            result += 10
        elif i[j] == "L":
            result += 50
    if result in li:
        continue
    li.append(result)

print(len(li))

💡소요시간 : 4m

0개의 댓글