문제
코드
# 2503번 숫자야구/ 완전탐색
import itertools
data = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
num = list(itertools.permutations(data, 3))
n = int(input())
removeCount = 0
for _ in range(n):
n, s, b = map(int, input().split())
n = list(str(n)) # int는 리스트가 될 수 없다
removeCount = 0
for i in range(len(num)):
strike = ball = 0
i -= removeCount # num[0]부터 조회해야함
for j in range(3):
if num[i][j] == n[j]: # 입력한 숫자(한자리)와 num의 숫자(한자리)가 같으면 strike ++
strike += 1
elif n[j] in num[i]: # 입력한 숫자(한자리)가 num안에 들어있으면 ball ++
ball += 1
if (strike != s) or (ball != b): # 입력받은 s,b와 다르면 num에서 삭제
num.remove(num[i])
removeCount += 1
print(len(num))
풀이
완전탐색 문제
itertools.permutations를 사용해 중복되지 않는 수들의 배열을 구한다.
전체 순열을 입력받은 숫자와 비교해 조건(스트라이크, 볼)과 다르면 배열에서 제거해준다
최종적으로 배열의 길이가 가능성있는 숫자의 개수가 된다
'코딩테스트 > BOJ' 카테고리의 다른 글
[백준/파이썬] 14697번: 방 배정하기 (Python) (0) | 2021.04.11 |
---|---|
[백준/파이썬] 3084번: 사탕게임 (Python) (0) | 2021.03.19 |
[백준/파이썬] 5635번: 생일 (Python) (0) | 2021.02.26 |
[백준/파이썬] 1408번: 24 (Python) (0) | 2021.02.25 |