본문 바로가기
Coding

📁 백준 5568 카드놓기 - Python

by 별똥별💫 2023. 3. 23.

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

 실버 IV

 

5568번: 카드 놓기

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

www.acmicpc.net

📌문제

🖋 예제입력 1                                    🖋 예제입력 2   

4                                                             6

2                                                             3

1                                                             72

2                                                             2

12                                                          12

1                                                             7

                                                               2

                                                               1

  

🖋 예제출력 1                                  🖋 예제출력 2

7                                                             68

 

🖋힌트

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

 

💻 코드

 
from itertools import permutations

Card_N = int(input())   # 카드의 개수
Choice_K = int(input())  # 뽑는 카드의 개수
 
K_list = []
for i in range(Card_N):
        K_list.append(int(input()))
 
C_list =list(permutations(K_list,Choice_K)) # 뽑은 수 저장
 
Num = []
for i in C_list:
        Num.append(int(''.join(map(str,i))))

Num = list(set(Num))
 
print(len(Num))
 

 

 

📝 코드 리뷰

1. 카드 개수 입력

2. 뽑은 카드의 개수

3. 카드에 적힌 숫자 입력

4. 뽑은 카드에 적힌 숫자로 만들 수 있는 숫자의 조합 찾기

5. 숫자로 합쳐준 후 집합 set()을 이욯해 중복된 숫자 제거

 

📖 참고.

- 집합 set() -> 중복된 숫자를 제거할 때 사용(집합의 원리)

 

🎈알고리즘 분류

- 자료구조

- 브루투포스 알고리즘

- 해시를 사용한 집합과 맵

- 백트래킹

 

'Coding' 카테고리의 다른 글

📁백준 10799 쇠막대기 -Python  (0) 2023.05.16
📁 백준 2164 카드2 - Python  (0) 2023.05.11