Algorithm/Implementation
[Baekjoon 2503 / Python / 실버3] 숫자 야구
양선규
2024. 6. 10. 19:50
728x90
반응형
import sys
import itertools
input = sys.stdin.readline
# 질문 횟수
N = int(input())
# 숫자, 스트라이크, 볼
q = []
for i in range(N):
q.append(list(map(int, input().split())))
num = [i for i in range(1, 10)]
numbers = list(itertools.permutations(num, 3))
# 결과 저장할 변수
result = 0
# 생성된 모든 숫자에 대해서 반복
for i in numbers:
# 숫자 하나하나에 대해, 모든 질문에 대한 조건 검사
for j in range(len(q)):
strike = 0
ball = 0
for k in range(3):
if str(i[k]) == str(q[j][0])[k]: # 숫자가 일치하면 strike
strike += 1
elif str(q[j][0])[k] in str(i): # 일치하진 않지만 존재하면 ball
ball += 1
# strike나 ball 중 하나라도 맞지 않는다면 break ( 다음 숫자 보러 간다 )
if strike != q[j][1] or ball != q[j][2]:
break
# 마지막 반복일 경우
# 즉, 하나의 숫자가 모든 조건을 통과했을 경우
if j == (len(q) - 1):
result += 1
print(result)
permutations를 이용해 3자리 순열을 생성하고, 해당 순열을 조건들과 대입했다.
숫자 하나에 대하여, N가지 질문에 대한 조건을 전부 검사한 후 조건에 부합하다면 result에 추가했다.
질문에 대한 조건을 검사하던 중 하나의 질문이라도 부합하지 않다면 break하고 다음 숫자를 확인한다.
마지막으로 result를 출력한다.
728x90
반응형