PS/문제풀이
백준 2503 숫자 야구 Python
중규리
2024. 2. 9. 12:54
🐸 문제 정보
2503번: 숫자 야구
첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트
www.acmicpc.net
🤖 알고리즘
구현
⏱️ 풀이 시간
15.14m
📝 풀이
처음에 숫자 야구 규칙을 직접 코드로 구현해야하나..? 하고 헉 했는데, 알고보니 그냥 순열에서 조건 맞지 않는 요소를 제거하는 문제였다.
파이썬이니까 permutation 쓰고, set으로 시간복잡도를 조금이라도 줄이고자 했다.
🧑💻 나의 답
# pypy3
import sys
from itertools import permutations
input = sys.stdin.readline
n = int(input().rstrip())
candi = set(permutations([1,2,3,4,5,6,7,8,9], 3))
for _ in range(n):
cur, s, b = list(map(int, input().rstrip().split()))
cur = tuple(map(int, list(str(cur))))
temp = set()
for num in candi:
ts, tb = 0, 0
for i in range(3):
if num[i] == cur[i]: ts += 1
elif num[i] in cur: tb += 1
if (ts == s) and (tb == b):
temp.add(num)
candi = temp
print(len(candi))