본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 9242번 폭탄 해체

by 현장 2022. 5. 14.

-Code

zero = ["***", "* *", "* *", "* *", "***"]
one = ["  *", "  *", "  *", "  *", "  *"]
two = ["***", "  *", "***", "*  ", "***"]
three = ["***", "  *", "***", "  *", "***"]
four = ["* *", "* *", "***", "  *", "  *"]
five = ["***", "*  ", "***", "  *", "***"]
six = ["***", "*  ", "***", "* *", "***"]
seven = ["***", "  *", "  *", "  *", "  *"]
eight = ["***", "* *", "***", "* *", "***"]
nine = ["***", "* *", "***", "  *", "***"]
one2 = ["*", "*", "*", "*", "*"]

nums = [zero, one, two, three, four, five, six, seven, eight, nine]
boom = [input() for _ in range(5)]
result = ""
for i in range(0, len(boom[0]), 4):
    num = []
    for j in range(5):
        num.append(boom[j][i:i + 3])
    for j in range(10):
        if num == one2:
            result += '1'
            break
        if num == nums[j]:
            result += str(j)
            break
print("BEER!!" if int(result) % 6 == 0 else "BOOM!!")

처음에 0~9까지 구분을 배열로 받는 것 까진 생각 했는데 그 배열이랑 같을 경우 수를 어떻게 찾는지에 대해서 고민을 해봐도 안 풀려서 해당 부분을 찾아보니 배열에 다른 배열의 이름을 넣어서 딕셔너리처럼 만든 후 해당 위치를 숫자로 사용하면 해결이 되었습니다. 그리고 1이 마지막으로 나올 시 앞에 빈칸이 없이 만들어 지기 때문에 따로 예외를 두어서 해결을 했습니다.