반응형
코드 1
from itertools import permutations
n = int(input())
k = int(input())
n_list = []
dic = {}
cnt = 0
for _ in range(n):
n_list.append(int(input()))
m_list = list(permutations(n_list,k))
for a in m_list:
b = ''
for i in a:
b += str(i)
if b not in dic:
dic[b] = 1
cnt+=1
print(cnt)
permutations 함수를 이용해서 만들 수 있는 모든 조합을 구해서 m_list에 저장했다.
구해진 조합의 숫자들을 어떻게 하나의 숫자로 합칠까 고민을 하다가 각각의 숫자들을 string 형으로 바꿔서 다 더해주었다. join을 쓰고 싶었는데 잘 안 됐다.. 중복체크도 딕셔너리를 이용해서 해주었는데 다른 풀이를 보니 set 함수를 다들 많이 사용했다.
코드 2
from itertools import permutations
n = int(input())
k = int(input())
n_list = []
for _ in range(n):
n_list.append(int(input()))
m_list = list(permutations(n_list,k))
ans = set()
for a in m_list:
b =''.join((map(str,a)))
ans.add(b)
print(len(ans))
map(str,a)를 이용해서 a의 모든 요소를 string 형으로 바꿔준 후 join을 했다. 위에서는 string 형으로 바꿔주지 않아서 오류가 났었던 것 같다. 이번에는 딕셔너리를 사용하지 않고 set 함수를 사용했다. set은 값을 넣어줄 때 append가 아닌 add를 사용한다. 중복되는 값이 들어오면 그 값은 추가되지 않는다.
반응형
'알고리즘 > 완전탐색' 카테고리의 다른 글
[백준][Python] 9094번 수학적 호기심 (0) | 2022.07.11 |
---|---|
[백준][Python] 16937번 두 스티커 (0) | 2022.07.08 |
[백준][Python] 2503번 숫자 야구 (0) | 2022.07.07 |
[백준][Python] 18511번 큰 수 구성하기 (0) | 2022.07.07 |
[백준][Python] 2422번 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2022.07.06 |
댓글