alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 5568 카드 놓기_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 5568 카드 놓기_파이썬

알파이 2020. 11. 26. 08:09

 

5568 카드 놓기    www.acmicpc.net/problem/5568

 

5568번: 카드 놓기

상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다.

www.acmicpc.net

 

 

문제 풀기 전 공부할 것 : 자료 구조, 브루트포스 알고리즘, 재귀, 맵

 

 

 

 

 

 

 

풀이

<내용>

  • 순열을 이용해서 해결할 수 있다.
  • n개 중에서 k개를 뽑을 때, 순서에 따라서 다른 숫자를 만들 수 있으므로 순열을 이용해야 한다.
  • 같은 숫자를 만들 경우를 대비해서 set을 이용한다.

 

 

<코드>

from itertools import permutations
import sys
input = sys.stdin.readline

n, k = int(input()), int(input())
cards = [input().rstrip() for _ in range(n)]
res = set()
for per in permutations(cards, k):
    res.add(''.join(per))
    
print(len(res))

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments