백준 문제 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 |