💡문제접근
- "실제 로마 숫자에서는 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