개발자 톡

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

테스트케이스 3번째부터 오답이라고 뜨는데 반례 좀 알 수 있을까요?

등록일
2024-01-30 23:00:24
조회수
206
작성자
qhsl99
import sys


t = int(sys.stdin.readline().rstrip())

# 전광판 숫자 0 ~ 9까지 각각 불 들어와있는 칸(숫자) 저장
num = [{1, 2, 3, 4, 5, 6}, # 0
      {5, 6}, # 1
      {1, 3, 4, 6, 7}, # 2
      {1, 4, 5, 6, 7}, # 3
      {2, 5, 6, 7}, # 4
      {1, 2, 4, 5, 7}, # 5
      {1, 2, 3, 4, 5 ,7}, # 6
      {1, 2, 5, 6}, # 7
      {1, 2, 3, 4, 5, 6, 7}, # 8
      {1, 2, 4, 5, 6, 7}] # 9


input_value = []


for i in range(t):
    a, b = sys.stdin.readline().rstrip().split()
    # 입력받은 문자열을 반대로 뒤집어서 저장(두 문자열의 길이가 다른것을 보완)
    input_value.append((a[::-1], b[::-1]))


for a, b in input_value:
    count = 0
    n = min(len(a), len(b))
    # 두 문자열 중 길이가 짧은 것의 길이만큼 반복하며 개수 세기
    for i in range(n):
        # 두 집합의 합집합에서 교집합을 제거한 후 그 개수를 세면 변경된 수 파악 가능
        count += len(num[int(a[i])] | num[int(b[i])]) - len(num[int(a[i])] & num[int(b[i])])
    # 두 문자열의 길이가 같았다면 더 볼 필요 없이 출력하고 넘어감
    if len(a) == len(b):
        print(count)
        continue
    # 다르다면 문자열 길이가 더 길었던 것의 나머지 자리수 확인  
    for i in range(n, n + abs(len(a) - len(b))):
        if int(a) > int(b):
            count += len(num[int(a[i])])
        else:
            count += len(num[int(b[i])])
    print(count)


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

이 카테고리의 톡 더보기