백준 문제 정리 2503번 - Python

이성효·2021년 7월 28일
0

백준문제

목록 보기
2/8

2503 숫자 야구 문제

문제 링크 : https://www.acmicpc.net/problem/2503

  1. 이번엔 파이썬 sys 라이브러리에 있는 permuatations 함수를 사용해보았다. 이 함수는 itreable한 원소로 순열과 조합을 구할 수 있도록 도와주는 함수다. 반복문을 돌리지 않고도 만들 수 있는 경우의 수를 찾아낼 수 있다.

    itertools.permutation
  2. 완성 코드 :

    import sys 
    from itertools import permutations 
    
    n = int(input()) 
    num = list(permutations([1,2,3,4,5,6,7,8,9], 3)) #리스트에 숫자를 미리 넣기
    
    for _ in range(n): 
        test, s, b = map(int, input().split()) 
        test = list(str(test)) 
        remove_cnt = 0 
    
    for i in range(len(num)): 
        s_cnt = b_cnt = 0 
        i -= remove_cnt 
    
        for j in range(3): 
    	test[j] = int(test[j]) 
    	if test[j] in num[i]: 
    	   if j == num[i].index(test[j]): 
    		s_cnt += 1 
    	   else: 
           		b_cnt += 1 
                
        if s_cnt != s or b_cnt != b: 
    	num.remove(num[i]) 
    	remove_cnt += 1 
        
    print(len(num))
    

느낀 점 : 각 위치와 맞는 숫자(스트라이크) 혹은 위치는 맞지 않지만 같은 숫자가 있을 때(볼)의 케이스를 생각하다보니 숫자카드 경우의 수 수학 문제가 생각이 났다. "파이썬" 키워드와 함께 찾아보았더니 permuatations 함수를 찾아볼 수 있었다. 직접 응용하는게 쉽지는 않았지만, 이용해보니 훨씬 문제 풀이가 간편해져서 좋았다.

profile
디발자가 되고픈 이성효라고 합니다 :)

0개의 댓글