개발자 톡

연습문제 톡 [21년 재직자 대회 예선] 전광판

아무리 머리를 굴려도 모르겠어요. 반례가 뭐가 있죠?

등록일
2024-02-07 17:10:44
조회수
276
작성자
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번부터 틀렸다고 뜨네요.

반례 찾아주시면 너무나 감사드리겠습니다.

#[21년_재직자_대회_예선]_전광판

이 카테고리의 톡 더보기