-Code
from itertools import permutations
nums = list(permutations([str(i) for i in range(1, 10)], 3))
for _ in range(int(input())):
baseball, st, ba = map(int, input().split())
baseball = str(baseball)
remove_cnt = 0
for i in range(len(nums)):
st_cnt, ba_cnt = 0, 0
i -= remove_cnt
for j in range(3):
if baseball[j] in nums[i]:
if baseball[j] == nums[i][j]:
st_cnt += 1
else:
ba_cnt += 1
if st != st_cnt or ba != ba_cnt:
nums.remove(nums[i])
remove_cnt += 1
print(len(nums))
처음에는 머리로는 아는데 구현을 못해서 고민을 오래 하다가 결국 풀이가 생각이 안 나서 원리만 찾아봤더니 그냥 모든 3개의 1~9까지 순열에서 스트라이크와 볼 수가 맞지 않는 것을 지우는 것이었습니다. 그래서 코드를 짰으나 중간중간에 건너뛰는 부분이 생겨서 도저히 풀리지 않아서 찾아보니 지운 개수만큼 i값에서 빼줘야 하는 것을 알게 되었고 해결을 했습니다. 많이 아쉬운 문제였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 18512번 점프 점프 (0) | 2022.05.09 |
---|---|
[백준/파이썬] 2160번 그림 비교 (0) | 2022.05.09 |
[백준/파이썬] 2824번 최대공약수 (0) | 2022.05.09 |
[백준/파이썬] 1990번 소수인팰린드롬 (0) | 2022.05.09 |
[백준/파이썬] 9421번 소수상근수 (0) | 2022.05.09 |