Post

[Softeer / Python] 전광판


문제 링크:

link6268





문제 이해


  • 7×5 전구 배열로 숫자를 표현하는 전광판이 있으며, 각 숫자는 0~9까지 나타낼 수 있음.

    6268

  • A에서 B로 전광판 숫자를 변경하는데, 최소한으로 스위치를 눌러서 전구의 상태를 바꿔야 함.
  • 입력:
    • T개의 테스트 케이스.
    • 각 테스트 케이스마다 두 개의 자연수 A와 B가 주어짐.
    • A와 B는 1자리 이상 5자리 이하의 숫자이며, 만약 자릿수가 비어있는 경우, 7개의 전구가 모두 켜지지 않음에 유의.
  • 출력: A를 B로 바꾸기 위한 최소 스위치 누름 횟수.







해결 전략


  1. 각 숫자에 대해 segment를 설정
  2. 비어있는 자릿수 구현을 위해 reverse하여 자릿수만큼 None(비어있는 segment) 채우기
  3. 모든자릿수에 대해 리스트를 만든 뒤 element-wise 차이 구하기







구현 코드, 풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
n = int(input())
list_price = []
for r in range(n):
  list_price.append(map(str, input().split()))

segment_none = [0, 0, 0, 0, 0, 0, 0]
segment = {
    0: [1, 1, 1, 1, 1, 1, 0],
    1: [0, 1, 1, 0, 0, 0, 0],
    2: [1, 1, 0, 1, 1, 0, 1],
    3: [1, 1, 1, 1, 0, 0, 1],
    4: [0, 1, 1, 0, 0, 1, 1],
    5: [1, 0, 1, 1, 0, 1, 1],
    6: [1, 0, 1, 1, 1, 1, 1],
    7: [1, 1, 1, 0, 0, 1, 0],
    8: [1, 1, 1, 1, 1, 1, 1],
    9: [1, 1, 1, 1, 0, 1, 1]
}

def mk_segment(price):
  reverse = price[::-1]
  price_list = []
  for u in range(5):
    if u < len(price):
      price_list.append(segment[int(reverse[u])])
    else:
      price_list.append(segment_none)
  return price_list

for oil_price in list_price:
  first, second = oil_price

  first_segment = mk_segment(first)
  second_segment = mk_segment(second)

  list_diff = [[abs(first_segment[i][j] - second_segment[i][j]) for j in range(len(first_segment[0]))] for i in range(len(first_segment))]
  print(sum(sum(row) for row in list_diff))


  • main :
    • 입력을 받아서 가격을 저장하는 list_price 리스트를 구성함.
    • 반복문을 통해 각 주유 가격을 처리하며, 두 가격의 7세그먼트 배열을 계산하고 차이를 출력.
    • 7세그먼트 디스플레이 차이 계산:
      • 두 가격을 7세그먼트로 변환한 후, 각 자릿수마다 켜짐/꺼짐 상태의 차이를 계산함.
      • 차이를 모두 합산하여 두 주유 가격 간의 LED 상태 변화량을 출력.
  • mk_segment 함수:
    • 입력받은 가격을 7세그먼트 배열로 변환함. 가격의 각 자리에 해당하는 숫자를 segment 배열에서 찾아 7개의 LED 상태를 반환.
    • 5자리 이하의 가격은 오른쪽에서부터 맞춰져 변환되며, 빈 자리에는 segment_none을 추가하여 처리.



This post is licensed under CC BY 4.0 by the author.