programming language/Algorithm

Softeer Level2 전광판 (python)

jellylucy 2023. 11. 3. 17:16

나의 풀이

전광판 숫자를 나타내는 거를 배열로 만들었다.

근데.. 공백을 생각 못해서 틀렸고 dict을 사용하지 않아서 애먹었다.

1. str에 공백 넣기

type(A) = 'str'인 A가 있을 때, 

공백을 넣고 싶은 경우 : A = ' ' * n + A

원하는 공백 개수만큼 넣을 수 있다.

 

2. 전광판에 표시되는 경우의 수는 0부터 9 그리고 공백이다.

이거를 이차원배열이 아닌 key, value값을 가진 dict()으로 만들면 편하다.

 

그리고 dict 값 가져올 때 list처럼 [] 사용한다. ()아님

import sys
t = int(input())
testcase = []
for _ in range(t):
  a, b = input().split()
  a = ' ' * (5 - len(a)) + a
  b = ' ' * (5 - len(b)) + b
  testcase.append([a,b])

numbers = {
  '0' : [1, 1, 1, 0, 1, 1, 1],
  '1' : [0, 0, 1, 0, 0, 1, 0],
  '2' : [0, 1, 1, 1, 1, 0, 1],
  '3' : [0, 1, 1, 1, 0, 1, 1],
  '4' : [1, 0, 1, 1, 0, 1, 0],
  '5' : [1, 1, 0, 1, 0, 1, 1],
  '6' : [1, 1, 0, 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],
  ' ' : [0, 0, 0, 0, 0, 0 ,0]
}
answer = 0 
# a, b를 바꿔야한다. 
# 그 전에 같은 자리로 통일하기
# 비교 방법 같지 않으면 + 하기
def difference(a, b):
  result = 0
  for i in range(5):
    for j in range(7):
      # print(numbers[a[i]], "#") 
      # () 를 사용하는게 아니고 []으로 가져오는 것.
      if (numbers[a[i]][j] != numbers[b[i]][j]):
        result += 1
  return result
for a,b in testcase:
  print(difference(a,b))