import sys
t = int(input())
def set_time(n):
time = [0]*7
if n == 0:
time[0],time[1],time[2],time[4],time[5],time[6] = 1,1,1,1,1,1
elif n == 1:
time[2],time[5] = 1,1
elif n == 2:
time[0],time[2],time[3],time[4],time[6] = 1,1,1,1,1
elif n == 3:
time[0],time[2],time[3],time[5],time[6] = 1,1,1,1,1
elif n == 4:
time[1],time[2],time[3],time[5] = 1,1,1,1
elif n == 5:
time[0],time[1],time[3],time[5],time[6] =1,1,1,1,1
elif n == 6:
time[0],time[1],time[3],time[4],time[5],time[6] = 1,1,1,1,1,1
elif n == 7:
time[0],time[1],time[2],time[5] = 1,1,1,1
elif n == 8:
time[0],time[1],time[2],time[3],time[4],time[5],time[6] = 1,1,1,1,1,1,1
elif n == 9:
time[0],time[1],time[2],time[3],time[5],time[6] = 1,1,1,1,1,1
return time
for _ in range(t):
a,b = input().split()
time_list_a = [[0]*7 for _ in range(5)]
time_list_b = [[0]*7 for _ in range(5)]
len_a = len(a)
len_b = len(b)
for i in range(len_a):
time_list_a[4-i] = set_time(int(a[len_a-1-i]))
for i in range(len_b):
time_list_b[4-i] = set_time(int(b[len_b-1-i]))
result = 0
for i in range(5):
count = 0
for j in range(7):
diff = abs(time_list_a[i][j] - time_list_b[i][j])
count += diff
result += count
print(result)
이번 문제는 각 숫자가 7개의 전구로 이루어져 있는 전광판이 주어졌을 때, 자연수 A에서 자연수 B로 변경하기 위해 필요한 최소 스위치 클릭 횟수를 구하는 문제이다.
먼저 자연수가 들어왔을 때 해당 자연수를 나타내는 전광판을 return하는 함수(set_time)을 구현한 뒤에, 자연수를 2차원 리스트로 저장한 뒤에 두 리스트의 차이를 카운팅해주는 방식으로 풀이하였다.
단순한 구현문제이지만 다양한 풀이법을 생각해볼 수 있었던 문제였다 :)
'Algorithm 💡 > Implementation' 카테고리의 다른 글
[프로그래머스] 바탕화면 정리 (0) | 2023.06.23 |
---|---|
[프로그래머스] 공원 산책 (0) | 2023.06.23 |
[프로그래머스] 추억점수 (0) | 2023.06.23 |
[프로그래머스] 달리기 경주 (0) | 2023.06.23 |
[Softeer 기출문제] GBC (0) | 2023.05.30 |