https://www.acmicpc.net/problem/16922
Problem
- 로마 숫자에서는 수를 나타내기 위해서 I, V, X, L을 사용한다. 각 문자는 1, 5, 10, 50을 의미하고, 이 문제에서 다른 문자는 사용하지 않는다.
- 하나 또는 그 이상의 문자를 이용해서 수를 나타낼 수 있다. 문자열이 나타내는 값은, 각 문자가 의미하는 수를 모두 합한 값이다. 예를 들어, XXXV는 35, IXI는 12를 의미한다.
- 실제 로마 숫자에서는 문자의 순서가 중요하지만, 이 문제에서는 순서는 신경쓰지 않는다. 예를 들어, 실제 로마 숫자에서 IX는 9를 의미하지만, 이 문제에서는 11을 의미한다.
- 로마 숫자를 N개 사용해서 만들 수 있는 서로 다른 수의 개수를 구해보자.
조건
- 첫째 줄에 사용할 수 있는 문자의 개수 N (1 ≤ N ≤ 20)이 주어진다.
SOL
중복조합을 이용하는 문제이다.
근데, 항상 중복조합은 헷갈리는 부분이 있는거 같다. 이번기회에 중복조합, 조합, 순열을 정리해서 포스팅해야겠따!
#로마 숫자 만들기
# 1,5,10,50
from itertools import combinations_with_replacement
N=int(input())
result=[]
numbers=[1,5,10,50]
for combi in combinations_with_replacement(range(4),N):
sum=0
for i in combi:
sum +=numbers[i]
result.append(sum)
print(len(set(result)))
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/2442/파이썬] 별 찍기 -5 (0) | 2022.02.11 |
---|---|
[백준/1920/파이썬] 수 찾기 (0) | 2022.02.11 |
[백준/16917/파이썬] 양념 반 후라이드 반 (0) | 2022.02.10 |
[백준/파이썬/16968] 차량 번호판 1 (0) | 2022.02.09 |
[백준/17086/파이썬] 아기 상어 2 (0) | 2022.02.09 |