본문 바로가기
Algorithm/완전탐색

[백준] 2503번 숫자 야구 (완전탐색)

by HANNI하니 2023. 9. 10.

사용 언어 - Python3

문제 -  2503번 숫자 야구

 

2503번: 숫자 야구

첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트

www.acmicpc.net

 

정답

단순구현 (정답 맞춘 여부 X)

1. abc 세 숫자를 모두 만들어준다. abc는 겹치지 말아야하며, 1부터 시작한다

2. 스트라이크와 볼 수 확인해준다.

abc와 입력받은 숫자의 위치가 같다면 스트라이크 += 1

위치는 다르지만, abc 안에 있다면 볼 += 1

3. 볼과 스트라이크 수가 입력받은 수와 같다면 counter +=1 하나 성공!

4. counter가 n과 같아지면, 모든 조건을 충족한 것이므로 개수 추가! answer += 1

n = int(input())
numbers = [list(map(str,input().split())) for _ in range(n)]
answer = 0

for a in range(1,10): # 100의 자리수
    for b in range(1,10): # 10의 자리수
        for c in range(1,10): # 1의 자리수
            counter = 0
            
            if( a == b or b == c or c == a):
                continue

            for array in numbers:
                check = list(array[0])
                strike = int(array[1])
                ball = int(array[2])

                strike_count = 0
                ball_count = 0

                if (a == int(check[0])):
                    strike_count += 1
                if (b == int(check[1])):
                    strike_count += 1
                if (c == int(check[2])):
                    strike_count += 1
                if (a == int(check[1]) or a == int(check[2])):
                    ball_count += 1
                if (b == int(check[0]) or b == int(check[2])):
                    ball_count += 1
                if (c == int(check[0]) or c == int(check[1])):
                    ball_count += 1

                if (strike != strike_count):
                    break
                if (ball != ball_count):
                    break
                
                counter += 1

            if counter == n:
                answer += 1
                
print(answer)

 

 

레퍼런스

  • 정답 깃허브

https://github.com/yyeongeun/codingtest/blob/main/BAEKJOON/2503_%EC%88%AB%EC%9E%90%EC%95%BC%EA%B5%AC.py

 

댓글