Kim Seon Deok
[백준] 2503 숫자 야구 본문
https://www.acmicpc.net/problem/2503
1.순열을 통해 문제를 풀기 위해 itertools 모듈의 permutations함수를 import
2.n과 hint를 통해 입력을 받음
3.1~9까지 문자열의 형태로 number리스트 생성
4.permutations함수를 통해 number리스트에서 만들어질 수 있는 모든 경우의 수를 example_리스트에 저장
5.입력받은hint 리스트중 0번째 인덱스만 뽑아내어 문자열로 변경 후 만들어진 새로운 인덱스 answer
6.길이가 3인 리스트 두 개를 인자로 받아, strike와 ball의 점수를 계산하는 score함수
7. 모든 경우의 수가 담긴 example_리스트와 입력받은 hint함수dml 0번째 인덱스를 문자열로 쪼개어 저장한 answer리스트를 인자로 하여 score함수에 넣으면 example_리스트의 i번째 인덱스마다 결과가 n개씩 출력된다.
n개를 각각res리스트에 저장하고 최종적으로 c리스트에 저장한다.
8.c리스트와 맨 처음 입력할 때 만들었던 hint리스트가 같을 때 그때의 c리스트의 인덱스 갯수를 찾는다.
from itertools import permutations # 순열
n = int(input()) # 추측하는 횟수
hint = [list(map(int,input().split())) for _ in range(n)] # 힌트 입력받기
# print(hint)
number = ['1','2','3','4','5','6','7','8','9']
example = list(permutations(number,3)) # 모든 경우의 수
example_ = [] # [['1','2','3'], ...] 형태
for i in range(len(example)):
example_.append(list(example[i]))
def make_list(l,n):
for i in range(len(hint)):
l.append(hint[i][n])
return l
ans = [] # 대답한 숫자들 [123,356,327,489]
make_list(ans,0)
answer = [] # 대답한 숫자들을 각 자릿수만큼 문자열로 분할
# [['1', '2', '3'], ['3', '5', '6'], ['3', '2', '7'], ['4', '8', '9']]
for i in range(len(ans)):
a=list(str(ans[i]))
answer.append(a)
def score(list1,list2):
strike = 0
ball = 0
for i in range(0,3):
for j in range(0,3):
if list1[i] == list2[j] and i == j:
strike += 1
ball+=0
elif list1[i] == list2[j] and i != j:
strike+=0
ball += 1
else:
strike+= 0
ball +=0
result = []
A = int(str(list2[0]) + str(list2[1]) + str(list2[2]))
result.append(A)
result.append(strike)
result.append(ball)
return result
c = []
i = 0
while i < len(example_):
res = []
for j in range(len(answer)):
res.append(score(example_[i],answer[j]))
c.append(res)
i +=1
p = []
for k in range(len(c)):
if c[k] == hint:
p.append(c[k])
print(len(p))
'python > Algorithm' 카테고리의 다른 글
[백준] 5397 키로거 (0) | 2022.01.31 |
---|---|
[백준] 1759 암호만들기 (0) | 2022.01.29 |
[백준] 14889 스타트와 링크 (0) | 2022.01.26 |
[백준] 20436 ZOAC 3 (0) | 2022.01.22 |
[백준 14670] 병약한 영정 (0) | 2022.01.19 |
Comments