반응형
밑의 링크는 백준에서의 문제 링크입니다.
파이썬 코드와 결과입니다.
# readline을 사용하기 위해 import합니다.
from sys import stdin
# permutations를 사용하기 위해 import합니다.
from itertools import permutations
# 첫째 줄에 카드의 개수 n을 입력합니다.
# 정수형으로 변환합니다.
n = int(stdin.readline())
# 둘째 줄에 선택하는 카드의 수 k를 입력합니다.
# 정수형으로 변환합니다.
k = int(stdin.readline())
# 카드들에 쓰여있는 수를 저장할 리스트 변수를 선언합니다.
cards = [None] * n
# 카드의 개수 n만큼 반복합니다.
for card_idx in range(n):
# 카드에 적혀있는 수를 입력합니다.
# 맨 끝의 \n은 떼어내고 cards에 넣어줍니다.
cards[card_idx] = stdin.readline().rstrip()
# 카드를 k개 뽑아서 순서대로 나열해본 경우들을 리스트 변수로 선언합니다.
card_pers = list(permutations(cards, k))
# 튜플로 만들어져 있는 card_pers의 값 하나하나들을 숫자로 된 문자열로 만들어 준 후,
# set 변수에 넣어 중복되는 것은 지워줍니다.
numbers = set(map(''.join, card_pers))
# numbers의 길이인 상근이가 만들 수 있는 정수의 개수를 출력합니다.
print(len(numbers))
뭔가 더 간결하게 짤 수 있는 코드인 것 같은데 잘 모르겠습니다...
다른 사람들의 코드를 보고 공부해봐야겠습니다.
그리고 문제를 풀 때 파이썬을 사용할 때는 permutations를 제공해줘서 그나마 편하게 푸는 느낌이었습니다.
카테고리를 확인해보니 다른 언어를 사용해서 풀 때 적용하는 방법들이 적혀있는 것 같은데
다른 언어로는 어떻게 풀어야 할지 더 생각해봐야겠습니다.
풀고나서도 아쉬움이 많이 남는 문제였습니다...
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글