Python - [백준]5568-카드 놓기

Paek·2023년 1월 22일
0

코테공부

목록 보기
9/44
post-custom-banner

출처

https://www.acmicpc.net/problem/5568

문제

N개의 카드 중 k개의 카드를 골라 이어붙여서 만들 수 있는 정수의 갯수를 구하는 문제이다

접근방법

이 경우 카드를 뽑는 순서에 따라서도 충분히 경우가 달라질 수 있다. 그렇다면 조합이 아닌 순열 (permutation)을 활용하여 모든 경우의 수를 살펴보도록 한다.

  • n개중 k개를 뽑아 리스트로 반환한다 list(permutations(arr, k))
  • 기존에 만들어준 수를 확인하여 중복되지 않는다면 배열에 추가
  • 배열의 길이를 return한다.

여기서 sys.stdin.readline()을 사용하니 개행문자도 같이 추가되는 현상을 겪었다. 그래서 양 옆 문자를 제거해주는 strip()을 사용하였다

코드

import sys
from itertools import permutations
n = int(sys.stdin.readline())
k = int(sys.stdin.readline())
arr = []
for _ in range(n):
    arr.append(sys.stdin.readline().strip())
per_arr = list(permutations(arr, k))
result_arr = []
for i in per_arr:
    tmp = ''
    for j in range(k):
        tmp += i[j]
    if tmp not in result_arr:
        result_arr.append(tmp)
print(len(result_arr))
profile
티스토리로 이전했습니다. https://100cblog.tistory.com/
post-custom-banner

0개의 댓글