solution
1. 순열(permutations) 이용
2. int는 list() 불가능 → list(str(x))
# 2503, 숫자 야구
import sys
from itertools import permutations
n = [1, 2, 3, 4, 5, 6, 7, 8, 9]
num = list(permutations(n, 3)) # 순열로 3개씩 뽑음
t = int(sys.stdin.readline())
for _ in range(t):
test, s, b = map(int, sys.stdin.readline().split())
test = list(str(test))
removed_cnt = 0 # 배열에서 제거된 튜플 개수
# num : 3개 리스트
leng = len(num)
for i in range(leng):
s_cnt = b_cnt = 0 # 스트 개수, 볼 개수 0 초기화
i -= removed_cnt
for j in range(3):
test[j] = int(test[j])
if test[j] in num[i]:
if j == num[i].index(test[j]):
s_cnt += 1
else:
b_cnt += 1
if s_cnt != s or b_cnt != b:
num.remove(num[i]) # 스트 개수, 볼 개수 다르면 배열에서 제거
removed_cnt += 1
print(len(num))
29380KB
64ms
문제 출처 https://www.acmicpc.net/problem/2503
'알고리즘 > 브루트포스' 카테고리의 다른 글
자바 | 백준 | 1034 | 램프 (0) | 2021.05.12 |
---|---|
자바 | 백준 | 1759 | 암호 만들기 (0) | 2021.02.28 |
파이썬 | 백준 | 7569 | 토마토 | bfs 3차원 시간초과 (0) | 2020.09.05 |
파이썬 | 백준 | 15686 | 치킨 배달 | 조합(combinations) (0) | 2020.08.21 |
파이썬 | 백준 | 2309 | 일곱 난쟁이 | 조합(combinations) (0) | 2020.08.17 |