Input
첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다.
이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트라이크 개수를 나타내는 정수와 볼의 개수를 나타내는 정수, 이렇게 총 세 개의 정수가 빈칸을 사이에 두고 주어진다.
1 | import sys |
Brute Force
완전 탐색을 어떻게 접근해야 하는지 감을 잡았다. 중첩 반복문의 끝이라 런타임 에러든 뭐든 틀릴 줄 알았는데 맞아서 쩌매 당황;;
이 문제는 1~9 중 서로 다른 digit number을 가진 3자리 자연수 중 strike
, ball
을 만족시키는 경우를 고르면 된다.
일단 가능한 경우의 숫자를 모두 만들어놓고
1
2
3
4
5for i in range(1, 10):
for j in range(1, 10):
for k in range(1, 10):
if i != j and j != k and i != k:
ret[i*100 + j*10 + k] = True여기서 조건에 맞는 경우는 남기고 아닌 경우는 제외시키면 됨
1
2if strike != s[idx] or ball != b[idx]:
ret[t] = Falsestrike: 숫자도 위치도 같은 경우
1
2if temp[d] == now[d]:
strike += 1ball: 숫자는 같되 위치가 다른 경우
1
2elif now.count(temp[d]) > 0:
ball += 1
Output
첫 줄에 영수가 생각하고 있을 가능성이 있는 답의 총 개수를 출력한다.
True
False
를 이용했기 때문에sum
을 이용하면 바로len
을 출력할 수 있음1
print(sum(ret))