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
'Baekjoon' 카테고리의 다른 글
[BOJ / 백준] 16938번 캠프 준비 파이썬(Python) 문제 풀이 (0) | 2021.07.25 |
---|---|
[BOJ / 백준] 16937번 두 스티커 파이썬(Python) 문제 풀이 (5) | 2021.07.23 |
[BOJ / 백준] 16936번 나3곱2 파이썬(Python) 문제 풀이 (0) | 2021.07.23 |
[BOJ / 백준] 16917번 양념 반 후라이드 반 파이썬(Python) 문제 풀이 (0) | 2021.07.20 |
[BOJ / 백준] 16968번 차량 번호판 1 파이썬(Python) 문제 풀이 (0) | 2021.07.20 |