Baekjoon

[BOJ / 백준] 16922번 로마 숫자 만들기 파이썬(Python) 문제 풀이

728x90

 

문제

 

 

문제 링크 : https://www.acmicpc.net/problem/16922

 

16922번: 로마 숫자 만들기

2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다.

www.acmicpc.net

 

 

 

 

CODE

from itertools import combinations_with_replacement
n = int(input())
result = []
numbers = [1, 5, 10, 50]

for temp in combinations_with_replacement(range(4), n):
    sum = 0
    for i in temp:
        sum += numbers[i]
    result.append(sum)

print(len(set(result)))

 

 

 

 

 

 

풀이

우리의 편리한 파이썬은 모든 가능한 조합을 구하는 함수를 제공하는 itertools의 combinations 가 있다..!

모든 조합의 합을 구하고 리스트에 저장한 뒤, 리스트의 중복을 없앤다

 

리스트에서 중복값을 방법에는 두 가지가 있다

1. 집합 자료형 set을 이용

2. 리스트 요소를 순회하면서 중복 여부를 체크하여 제거

for문을 통해 구현해야 하는 두 번째 방법 대신 첫 번째 방법을 이용하여 result 리스트의 중복을 없앴습니다!

 

 

 

 

 

결과

 

 

 

 

 

 

 

728x90