문제
풀이
- 완전 탐색 문제
- 정답이 될 수 있는 123~987 의 경우의 수를 모두 검사하면서 답이 될 수 없는 경우를 줄여 나간다.
- 답이 될 수 없는 경우는 어떻게 구하는가?
1. 입력 받은 값(숫자,S,B)과 비교해서 Strike 와 Ball 의 값이 같다면 정답일 수도 있다.(영수가 생각하고 있을 가능성이 있는 답)
- 위의 경우 하나만 체크 해준다면 결과가 나온다.
잡담
- 구현이 너무 약하다.
- 어렴풋이 풀이는 생각나는데 구현하기가 쉽지 않다.
전체 코드
from itertools import permutations
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
num = list(permutations(data, 3))
n = int(input())
remove_count = 0
for _ in range(n):
n, s, b = map(int, input().split())
n = list(str(n))
remove_count = 0
for i in range(len(num)):
s_cnt = 0
b_cnt = 0
i -= remove_count
for j in range(3):
n[j] = int(n[j])
if num[i][j] == n[j]:
s_cnt += 1
elif n[j] in num[i]:
b_cnt += 1
if s_cnt != s or b_cnt != b:
num.remove(num[i])
remove_count += 1
print(len(num))