개발자 톡
아무리 머리를 굴려도 모르겠어요. 반례가 뭐가 있죠?
- 등록일
- 2024-02-07 17:10:44
- 조회수
- 330
- 작성자
- jinhee765
import sys
n= int(input())
num = ['num0', 'num1','num2','num3','num4','num5','num6','num7','num8','num9']
# 0 1 2 3 4 5 6 7 8 9
num0 = [0,4,3,3,4,3,2,2,1,2] #0에서 0~9사이의 숫자로 바꿀 때 눌러야하는 스위치 수
num1 = [4,0,5,3,2,5,6,2,5,4] #1에서 0~9사이의 숫자로 바꿀 때 눌러야하는 스위치 수
num2 = [3,5,0,2,5,4,3,5,2,3] #2에서 0~9사이의 숫자로 바꿀 때 눌러야하는 스위치 수
num3 = [3,3,2,0,3,2,3,3,2,1] #3에서 0~9사이의 숫자로 바꿀 때 눌러야하는 스위치 수
num4 = [4,2,5,3,0,3,4,2,3,2]
num5 = [3,5,4,2,3,0,1,3,2,1]
num6 = [2,6,3,3,4,1,0,4,1,2]
num7 = [2,2,5,3,2,3,4,0,3,2]
num8 = [1,5,2,2,3,2,1,3,0,1]
num9 = [2,4,3,1,2,1,2,2,1,0]
numx = [0,2,5,5,4,5,6,4,7,6] #아무 숫자가 없다가 0~9사이의 숫자로 바꿀 때 눌러야하는 스위수
case=[]
#ans=0
for _ in range(n):
x,y = map(int, input().split())
a=list(map(int,str(x))) #각자리수마다 하나씩 리스트 만들기
b=list(map(int,str(y)))
ans=0
if len(a) > len(b):
for i in range(len(a)-len(b)):
b.insert(i,10) #자리수가 더 많은 b 리스트 앞부분에 10을 넣어줌
if len(a) < len(b):
for i in range(len(b)-len(a)):
a.insert(i,10) #자리수가 더 많은 a리스트 앞부분에 10을 넣어줌
m = max(len(a),len(b))
for i in range(m):
# if a[i]==10:
# if b[i]==1:
# ans=numx[i]
for j in range(10):
if a[i]==10 and b[i]==j:
ans += numx[j]
if b[i]==10 and a[i]==j:
ans += numx[j]
for k in range(10):
if a[i]== j and b[i] ==k:
ans += eval(num[j]+'[k]') #문자열 기반 표현식을 계산해줌
print(ans)
실행결과는 돌아가는데 Subtask3에 3번부터 틀렸다고 뜨네요.
반례 찾아주시면 너무나 감사드리겠습니다.