[백준] 2503번 숫자 야구

거북이·2023년 7월 8일
0

백준[실버3]

목록 보기
85/92
post-thumbnail

💡문제접근

  • 스트라이크와 볼의 개념을 정확히 이해하고 자릿수와 숫자가 모두 일치한다면 스트라이크 추가, 자릿수가 일치하지 않지만 숫자가 들어있다면 볼을 추가하고 입력한 스트라이크와 볼과 숫자가 일치하면 그대로 놔두고 만약 일치하지 않는다면 해당 숫자를 제거한다.

💡코드(메모리 : 31256KB, 시간 : 44ms)

from itertools import permutations
import sys
input = sys.stdin.readline

Array = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
arr = list(permutations(Array, 3))
N = int(input())

for _ in range(N):
    val, strike_cnt, ball_cnt = map(int, input().strip().split())
    val = list(str(val))

    # remove_cnt의 역할 : remove 시킨다면 인덱스 에러가 발생할 수 있는데 이를 제어하기 위하여 설정
    remove_cnt = 0

    for i in range(len(arr)):
        strike, ball = 0, 0
        i -= remove_cnt
        for j in range(3):
            # 자릿수와 숫자 모두 일치한다면?
            if val[j] == arr[i][j]:
                strike += 1
            # 숫자가 존재하지만 자릿수가 일치하지 않는다면?
            elif val[j] in arr[i]:
                ball += 1
        if strike != strike_cnt or ball != ball_cnt:
            arr.remove(arr[i])
            remove_cnt += 1

print(len(arr))

💡소요시간 : 48m

0개의 댓글