Skip to content

Commit 26fa01d

Browse files
committed
[Silver III] Title: 로마 숫자 만들기, Time: 116 ms, Memory: 111568 KB -BaekjoonHub
1 parent c943416 commit 26fa01d

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# [Silver III] 로마 숫자 만들기 - 16922
2+
3+
[문제 링크](https://www.acmicpc.net/problem/16922)
4+
5+
### 성능 요약
6+
7+
메모리: 111568 KB, 시간: 116 ms
8+
9+
### 분류
10+
11+
수학, 구현, 브루트포스 알고리즘, 조합론, 백트래킹
12+
13+
### 제출 일자
14+
15+
2026년 4월 4일 03:49:25
16+
17+
### 문제 설명
18+
19+
<p>로마 숫자에서는 수를 나타내기 위해서 I, V, X, L을 사용한다. 각 문자는 1, 5, 10, 50을 의미하고, 이 문제에서 다른 문자는 사용하지 않는다.</p>
20+
21+
<p>하나 또는 그 이상의 문자를 이용해서 수를 나타낼 수 있다. 문자열이 나타내는 값은, 각 문자가 의미하는 수를 모두 합한 값이다. 예를 들어, XXXV는 35, IXI는 12를 의미한다.</p>
22+
23+
<p>실제 로마 숫자에서는 문자의 순서가 중요하지만, 이 문제에서는 순서는 신경쓰지 않는다. 예를 들어, 실제 로마 숫자에서 IX는 9를 의미하지만, 이 문제에서는 11을 의미한다.</p>
24+
25+
<p>로마 숫자를 N개 사용해서 만들 수 있는 서로 다른 수의 개수를 구해보자.</p>
26+
27+
### 입력
28+
29+
<p>첫째 줄에 사용할 수 있는 문자의 개수 N (1 ≤ N ≤ 20)이 주어진다.</p>
30+
31+
### 출력
32+
33+
<p>첫째 줄에 로마 숫자 N개를 사용해서 만들 수 있는 서로 다른 수의 개수를 출력한다.</p>
34+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
N = int(input())
2+
romans = [1, 5, 10, 50]
3+
res = set()
4+
5+
def S(cnt, total, start_index):
6+
if cnt == N:
7+
res.add(total)
8+
return
9+
10+
for i in range(start_index, 4):
11+
S(cnt + 1, total + romans[i], i)
12+
13+
S(0, 0, 0)
14+
print(len(res))

0 commit comments

Comments
 (0)