본문 바로가기

CS/알고리즘

[TIL] 20240305 15일차

백준 문제 2503번: 숫자 야구

https://www.acmicpc.net/problem/2503

 

2503번: 숫자 야구

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

www.acmicpc.net

 

시행착오 코드 1:

더보기
def append_case(item, target):
    if item not in target:
        for idx, elem in enumerate(target):
            if not elem[0] and elem[1:] == item[1:]:
                target[idx] = item
            elif not elem[1] and elem[0] == item[0] and elem[2] == item[2]:
                target[idx] = item
            elif not elem[2] and elem[:2] == item[:2]:
                target[idx] = item

        target.append(item)


def number_baseball():
    # 게임을 진행한 횟수
    n = int(input())

    # 케이스 리스트
    answers = []
    numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9']

    # 케이스 수
    answer = 1

    # input 값 처리
    for i in range(n):
        result, strike, ball = map(int, input().split())
        result = str(result)
        if strike == 0:
            if ball == 0:
                for num in str(result):
                    numbers.remove(num)
            elif ball == 1:
                append_case(['', result[0], ''], answers)
                append_case(['', '', result[0]], answers)
                append_case([result[1], '', ''], answers)
                append_case(['', '', result[1]], answers)
                append_case([result[2], '', ''], answers)
                append_case(['', result[2], ''], answers)
            elif ball == 2:
                append_case(['', result[0], ''], answers)
                append_case(['', '', result[0]], answers)
                append_case([result[1], '', ''], answers)
                append_case(['', '', result[1]], answers)
                append_case([result[2], '', ''], answers)
                append_case(['', result[2], ''], answers)
            else:
                append_case([result[2], result[0], result[1]], answers)
                append_case([result[1], result[2], result[0]], answers)
                append_case([result[1], result[2], result[0]], answers)
                append_case([result[2], result[0], result[1]], answers)
                append_case([result[2], result[0], result[1]], answers)
                append_case([result[1], result[2], result[0]], answers)
        elif strike == 1:
            if ball == 0:
                append_case([result[0], '', ''], answers)
                append_case(['', result[1], ''], answers)
                append_case(['', '', result[2]], answers)
            elif ball == 1:
                append_case([result[0], '', result[1]], answers)
                append_case([result[0], result[2], ''], answers)
                append_case(['', result[1], result[0]], answers)
                append_case([result[2], result[1], ''], answers)
                append_case(['', result[0], result[2]], answers)
                append_case([result[1], '', result[2]], answers)
            else:
                append_case([result[0], result[2], result[1]], answers)
                append_case([result[2], result[1], result[0]], answers)
                append_case([result[1], result[0], result[2]], answers)
        elif strike == 2:
            if ball == 0:
                append_case([result[0], result[1], ''], answers)
                append_case([result[0], '', result[2]], answers)
                append_case(['', result[1], result[2]], answers)
        else:
            append_case([result[0], result[1], result[2]], answers)

        print(f"{i}번째: ", result, strike, ball)
        print(f"answers: {answers}")

    temp = len(numbers)
    for item in answers:
        stack = 1
        if not item[0]:
            stack *= temp
        if not item[1]:
            stack *= temp
        if not item[2]:
            stack *= temp
        answer += stack

    print(answer)


number_baseball()

 

'CS > 알고리즘' 카테고리의 다른 글

[TIL] 20240312 20일차  (0) 2024.03.12
[TIL] 20240311 19일차  (0) 2024.03.12
[TIL] 20240308 18일차  (0) 2024.03.08
[TIL] 20240307 17일차  (0) 2024.03.07
[TIL] 20240306 16일차  (0) 2024.03.06