[백준] 2503번: 숫자야구

Narcoker·2023년 6월 4일
0

코딩테스트

목록 보기
104/150

문제

https://www.acmicpc.net/problem/2503

풀이

Permutations을 이용해서 가능한 모든 답을 생성해 낸다.
가능한 모든 답들에 대화과정을 대입해서 올바른 대화인지 확인한다.
만약 중간에 하나라도 맞지 않는다면 다음 가능한 답에 대입을 시작한다.

대화 과정이 모두 통과하면 answer을 1 증가시킨다.

from itertools import permutations

N = int(input())
queries = [list(map(int, input().split(" "))) for _ in range(N)]

def check(case, query):
    input_num, input_strike, input_ball = query
    strike = ball = 0
    input_num = str(input_num)

    for index, num in enumerate(input_num):
        if int(num) in case:
            if case[index] == int(num):
                strike += 1
            else:
                ball += 1
    return ball == input_ball and strike == input_strike


def solution(N, queries):
    cases = list(permutations(range(1,10), 3))
    answer = 0
    for case in cases:
        correct_flag = True
        for query in queries:
            if not check(case, query):
                correct_flag = False
                break
        answer = answer + 1 if correct_flag else answer
    print(answer)
    return

solution(N, queries)
profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글