백준16113(파이썬) - 시그널

resilient

·

2021. 6. 24. 01:07

728x90
반응형

https://www.acmicpc.net/problem/16113

 

16113번: 시그널

zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는

www.acmicpc.net

  • 먼저 문제를 잘 읽고 이해해보면 5의배수로 n이 주어진다고 하였고, 이유는 배열로 봤을 때 열이 5로 동일한 2차원배열이 만들어지기 때문이다.
  • 주어진 입력값으로 열이 5로 동일한 2차원 배열을 만들어주기 위해서 list comprehension을 사용했다.
  • 생성된 2차원 배열에서 나는 첫번째 열부터 위에서 아래로 탐색하면서 (즉, 5개씩 탐색) 0~9 까지의 숫자를 표시하게 되는 값을 먼저 정의해주었다.
  • 그리고 탐색해주면서 temp 리스트에 하나씩 넣고, 정의해둔 숫자 값들하고 비교하면서, 어떤 숫자로 확인이되면, 해당하는 숫자를 ans 리스트에 넣어주고 temp리스트를 비워주는 방식으로 구현하였다.
  • 가장 고민을 헀던 부분은 1이 였다 왜냐하면 0을 표시할때도 1과 같이 ##### 부분이 있었기 때문이다. 이에 0과 1을 구분할 수 있는 코드를 작성했다.
import sys
input = sys.stdin.readline

zero = ['#','#','#','#','#','#','.','.','.','#','#','#','#','#','#']
one = ['#','#','#','#','#']
two = ['#','.','#','#','#','#','.','#','.','#','#','#','#','.','#']
three = ['#','.','#','.','#','#','.','#','.','#','#','#','#','#','#']
four = ['#','#','#','.','.','.','.','#','.','.','#','#','#','#','#']
five = ['#','#','#','.','#','#','.','#','.','#','#','.','#','#','#']
six = ['#','#','#','#','#','#','.','#','.','#','#','.','#','#','#']
seven = ['#','.','.','.','.','#','.','.','.','.','#','#','#','#','#']
eight = ['#','#','#','#','#','#','.','#','.','#','#','#','#','#','#']
nine = ['#','#','#','.','#','#','.','#','.','#','#','#','#','#','#']
blank = ['.','.','.','.','.']

n = int(input())
data = list(input().rstrip())
length = len(data)
# list comprehension
number = [data[i * (length//5) : (i+1) *(length//5)] for i in range((length + (length//5) - 1)//(length//5))]
temp = []
ans = []
for i in range(length//5):
    for j in range(5):
        temp.append(number[j][i])
        #0과 1 구분해준다.
        if temp == zero:
            ans.append(0)
            temp = []
        elif temp == one and i<(length//5)-1:
            if number[j][i+1] == '.' :
                ans.append(1)
                temp = []
        elif temp == one and i == (length//5)-1 and j == 4:
            ans.append(1)
            temp = []
        elif temp == two:
            ans.append(2)
            temp = []
        elif temp == three:
            ans.append(3)
            temp = []
        elif temp == four:
            ans.append(4)
            temp = []
        elif temp == five:
            ans.append(5)
            temp = []
        elif temp == six:
            ans.append(6)
            temp = []
        elif temp == seven:
            ans.append(7)
            temp = []
        elif temp == eight:
            ans.append(8)
            temp = []
        elif temp == nine:
            ans.append(9)
            temp = []
        elif temp == blank:
            temp = []
for i in ans:
    print(int(i),end="")

반응형