BruteForce_11_카드놓기(5568)

Eugenius1st·2022년 5월 26일
0

Algorithm_Baekjoon

목록 보기
121/158

BruteForce11카드놓기(5568)

문제

입력

첫째 줄에 n이, 둘째 줄에 k가 주어진다. 셋째 줄부터 n개 줄에는 카드에 적혀있는 수가 주어진다.

출력

첫째 줄에 상근이가 만들 수 있는 정수의 개수를 출력한다.

풀이

  • 모든 경우의수를 순열을 사용하여 배열에 넣어둔다
  • 입력받은 값 test와 모든 경우의수를 담은 arr값을 대조해본다.
  • 입력받은 수가 arr에 있는지 하나하나 확인한다
  • 스트라이크면 s_cnt += 1 / 볼이면 b_cnt += 1
  • 최종적으로 test와 arr 의 스트라이크와 볼 개수가 같은지 확인하고, 다르면 remove 한다

코드

import sys
sys.stdin = open("input.txt", "rt")
input = sys.stdin.readline
from itertools import permutations

n = int(input())
k = int(input())

arr = [input().rstrip() for _ in range(n)]

res = set()

print(arr)
for per in permutations(arr, k):
    
    res.add(''.join(per))
print(res)

print(len(res))

배운 것

  • strip([chars]) : 인자로 전달된 문자를 String의 왼쪽과 오른쪽에서 제거합니다.
  • lstrip([chars]) : 인자로 전달된 문자를 String의 왼쪽에서 제거합니다.
  • rstrip([chars]) : 인자로 전달된 문자를 String의 오른쪽에서 제거합니다.
  • 공백 제거 , 동일 문자 제거("조건"전달), 여러 문자 제거("여러 문자 조건" 전달)

따라서 input 으로 받은 문자 끝의 '\n'을 지워준다.

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글