반응형
코드
import sys
from itertools import permutations
n = int(input())
n_list = []
for i in range(n):
a = list(map(int,sys.stdin.readline().split()))
n_list.append(a)
items = [1,2,3,4,5,6,7,8,9]
i_list = list(permutations(items,3))
cnt = 0
for a in i_list:
flag = 0
for i in range(n):
s,b = 0,0
num_str = list(map(int,str(n_list[i][0])))
for j in range(3):
if a[j] == num_str[j]:
s += 1
else:
if a[j] in num_str:
b += 1
if s != n_list[i][1] or b != n_list[i][2]:
flag = 0
break
else:
flag = 1
if flag == 1:
cnt += 1
print(cnt)
설명
permutations 함수를 이용해서 1부터 9까지의 숫자로 만들 수 있는 개수가 3인 모든 조합을 구해서 i_list에 넣었다. i_list에 있는 리스트를 for문을 통해 주어진 조건에 만족하는지 하나씩 다 확인했다.
숫자를 string형으로 바꿔서 한 자리씩 비교를 했다. 만약 같으면 strike 수를 증가시키고, 다르면 다른 위치에 이 숫자가 존재하는지 확인하고 존재하면 ball 수를 증가시켰다.
flag 변수를 이용해서 만약 주어진 조건과 strike와 ball 수가 다르면 flag를 0으로 바꿨고 같으면 1로 바꿨다. for문을 나왔을 때 flag 값이 계속 1이면 모든 조건을 만족한다는 뜻이므로 cnt 값을 1 증가시켜줬다.
반응형
'알고리즘 > 완전탐색' 카테고리의 다른 글
[백준][Python] 16937번 두 스티커 (0) | 2022.07.08 |
---|---|
[백준][Python] 5568번 카드 놓기 (0) | 2022.07.08 |
[백준][Python] 18511번 큰 수 구성하기 (0) | 2022.07.07 |
[백준][Python] 2422번 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2022.07.06 |
[백준][Python] 1969번 DNA (0) | 2022.07.06 |
댓글