문제
2503번: 숫자 야구
첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트
www.acmicpc.net
코드
My answer
import sys
input=sys.stdin.readline
n=int(input())
num=[i for i in range(100,1000)]
cnt=0
for i in range(n):
res,ts,tb=map(int,input().split())
for j in range(len(num)):
ans,bns=0,0
tmp=str(num[j])
if(tmp=='0'):
continue
if((tmp[0]==tmp[1] or tmp[0]==tmp[2] or tmp[1]==tmp[2]) or ('0' in tmp)):
num[j]=0
else:
res=str(res)
for k in range(3):
for l in range(3):
if(tmp[k]==res[l] and k==l):
ans+=1
elif(tmp[k]==res[l] and k!=l):
bns+=1
#print(num[j],ans,bns)
if(ans!=ts or bns!=tb):
num[j]=0
print(900-num.count(0))
Another answer
a=[]
for i in range(1, 10):
for j in range(1, 10):
for k in range(1, 10):
if i!=j and j!=k and k!=i:
a.append([i, j, k])
for _ in range(int(input())):
b, c, d=map(int, input().split())
b=[b//100, (b//10)%10, b%10]
e=[]
for i in a:
if int(b[0]==i[0])+int(b[1]==i[1])+int(b[2]==i[2])==c and int(b[0] in i[1:])+int(b[1] in [i[0], i[2]])+int(b[2] in i[:2])==d:
e.append(i)
a=e[:]
print(len(a))
풀이
이것도 쉬운문젠데 이상한데서 헤맸다..지금 내 실력을 평가해봤을 때 브론즈 문제들은 대부분 문제 잘못 읽거나 조건 빠뜨려서 틀리는 것 같다;; 이럼 안되는데 우선 난 숫자의 범위가 정해져있기 때문에 전체숫자 리스트를 만들어놓고 해당 조건에 만족하지 않으면 삭제하는 방식으로 풀었다. 문제 어떤걸 잘못 읽었었냐면 숫자에 0이 포함되지 않는 다는 것이다. 읽긴 읽었었는데 대충 읽어서 숫자의 범위를 단순히 100~999까지만 설정해놓고 말았었다. 실제론 이 사이 숫자들에서도 0이들어가면 안된다. + 세자리 숫자가 모두 달라야 한다는 조건도 빠뜨리면 안된다.
728x90
반응형