업데이트:

2290번 - LCD Test

문제 이해

문제에서 주어지는 방식에 맞게 숫자를 그리면 되는 문제

접근

보자마자 구현이다! 하는 생각이 들었고, 숫자별로 하나씩 그려야하나 보던 중 출력을 자세히 보니
7 segments라는 것을 알아채었다
논리회로 강의에서 karnaugh map을 그리며 고통받던 기억에 PTSD가…

7 segments

위의 그림과 같이 출력하도록 구현하였다.

정답 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import sys
input = sys.stdin.readline
def getInts(): return map(int, input().split())


h, v = '-', '|'
s, n = input().split()
s = int(s)


def construct_segment(n):
    lcd = [[' ']*(s+2) for _ in range(2*s + 3)]
    for i in range(1, s+1):
        if n in '02356789':
            lcd[0][i] = h  # a
        if n in '01234789':
            lcd[i][-1] = v  # b
        if n in '013456789':
            lcd[s+1+i][-1] = v  # c
        if n in '0235689':
            lcd[2*s + 2][i] = h  # d
        if n in '0268':
            lcd[s+1+i][0] = v  # e
        if n in '045689':
            lcd[i][0] = v  # f
        if n in '2345689':
            lcd[s+1][i] = h  # g
    return lcd


display = [construct_segment(i) for i in n]

for line in zip(*display):
    for r in line:
        print(''.join(r), end=' ')
    print()

댓글남기기