문제 확인하기
2. 정답 코드 (Python, memory: 31120KB, time: 48ms, score: 10)
import itertools
def calculate_score(target, guess):
"""
주어진 target과 guess 숫자를 비교하여 스트라이크와 볼을 계산하는 함수입니다.
Args:
target (str): 비교할 대상 숫자.
guess (str): 추측한 숫자.
Returns:
int: 스트라이크의 수와 볼의 수를 기반으로 계산한 점수를 반환합니다.
"""
strikes = sum(target_digit == guess_digit for target_digit, guess_digit in zip(target, guess))
balls = sum(guess_digit in target for guess_digit in guess) - strikes
return strikes * 10 + balls
def find_matching_number(target_number):
"""
주어진 target_number에 대한 맞는 숫자를 찾는 함수입니다.
Args:
target_number (str): 맞추어야 할 대상 숫자.
Returns:
str: 주어진 조건에 맞는 숫자를 찾았을 경우 해당 숫자를 반환합니다.
"""
for guess in itertools.permutations('0123456789', 4):
guess_str = ''.join(guess)
score = calculate_score(target_number, guess_str)
if score == 40:
return guess_str
target_number = '5134'
matching_number = find_matching_number(target_number)
print(matching_number)