본문 바로가기

개발/algorithm

[백준 5568번] 카드 놓기 - python

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

 

5568번: 카드 놓기

예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다.

www.acmicpc.net

풀이 

- 순열 사용해서 풀었다.

- 숫자들의 순열을 구하고 각 케이스별 연결한 숫자 set(중복 제거를 위해) 에 추가 

- set의 개수 출력 

from itertools import permutations
import sys

input = sys.stdin.readline 
n = int(input())

k = int(input())

data = [] 
for _ in range(n):
  data.append(int(input()))

# 순열 구하기 
permute = list(permutations(data,k))

result = set()
for i in permute:
  # 숫자들을 연결해야 하므로 문자로 바꿔서 
  s = "".join(map(str,i))
  result.add(s)

print(len(result))