백준16113(파이썬) - 시그널
resilient
·2021. 6. 24. 01:07
728x90
반응형
https://www.acmicpc.net/problem/16113
- 먼저 문제를 잘 읽고 이해해보면 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="")
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
백준9461(파이썬) - 파도반 수열 (0) | 2021.06.28 |
---|---|
백준2011(파이썬) - 암호 코드 (0) | 2021.06.27 |
백준3085(파이썬) - 사탕 게임 (0) | 2021.06.21 |
백준11729(파이썬) - 하노이 탑 이동 순서 (0) | 2021.06.14 |
백준1107(파이썬) - 리모컨 (0) | 2021.06.11 |