0%

[프로그래머스] 숫자 야구

프로그래머스 - 완전 탐색

Code (Python)

  • 123~987까지의 리스트를 미리 만듦 (baseball_list)
  • baseball_list의 길이만큼 정답 배열(answer)을 만들고 True로 값 초기화
  • 스트라이크와 볼의 갯수가 같지 않을 경우 정답 배열의 값을 False로 변경
  • 배열 내에서 True인 것만 필터링해 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from itertools import permutations

def solution(baseball):
baseball_list = list(permutations([1,2,3,4,5,6,7,8,9], 3))
answer = []

for i in range(len(baseball_list)):
answer.append(True)

for i in baseball:
number = tuple(map(int, list(str(i[0]))))

for index, baseball in enumerate(baseball_list):
ball = 0
strike = 0

if number[0] == baseball[0]:
strike += 1
elif number[0] == baseball[1] or number[0] == baseball[2]:
ball += 1
if number[1] == baseball[1]:
strike += 1
elif number[1] == baseball[0] or number[1] == baseball[2]:
ball += 1
if number[2] == baseball[2]:
strike += 1
elif number[2] == baseball[0] or number[2] == baseball[1]:
ball += 1

if strike != i[1] or ball != i[2]:
answer[index] = False

return len(list(filter(lambda x: x, answer)))