Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 7세그먼트 디스플레이에 숫자 표시 가능 여부 확인하기

이번 문제에서는 숫자 n과 또 다른 입력값 c가 주어졌을 때, n을 7세그먼트 디스플레이로 표시할 수 있는지 확인해야 합니다. 단, 여기에는 하나의 제약 조건이 있습니다. 바로 최대 c개의 LED만 켤 수 있다는 점입니다.

예를 들어 입력이 n = 315, c = 17이라면 출력은 True가 됩니다. 315를 표시하는 데 필요한 LED는 12개뿐이고, 사용 가능한 LED는 17개이기 때문입니다.

7세그먼트 디스플레이의 LED 개수

각 숫자(0~9)를 표시하는 데 필요한 LED 개수는 다음과 같습니다.

  • 0 → 6개
  • 1 → 2개
  • 2 → 5개
  • 3 → 5개
  • 4 → 4개
  • 5 → 5개
  • 6 → 6개
  • 7 → 3개
  • 8 → 7개
  • 9 → 6개

따라서 이 문제를 해결하기 위해서는 다음 단계를 따릅니다.

  • seg := 각 숫자의 LED 개수를 담은 리스트 [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
  • s := n을 문자열로 변환
  • led_count := 0으로 초기화
  • i를 0부터 s의 길이 - 1까지 반복
    • led_count := led_count + seg[s의 i번째 문자에 해당하는 값]
  • 만약 led_count <= c라면
    • True 반환
  • 그렇지 않으면 False 반환

예제 코드

아래 구현 예제를 통해 더 잘 이해해 보겠습니다.

seg = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
def solve(n, c) :
    s = str(n)
    led_count = 0
    for i in range(len(s)) :
        led_count += seg[ord(s[i]) - 48]
    if led_count <= c:
        return True
    return False

n = 315
c = 17
print(solve(n, c))

입력

315, 17

출력

True

위 코드에서 ord(s[i]) - 48은 문자 형태의 숫자를 정수 인덱스로 변환하는 역할을 합니다. 아스키 코드에서 문자 '0'은 48이므로, 각 자리 문자에서 48을 빼면 해당 숫자에 맞는 인덱스가 됩니다. 이렇게 계산된 총 LED 개수가 허용치 c 이하인지 비교하여 결과를 판별합니다. 시간 복잡도는 숫자의 자릿수에 비례하므로 O(d)이며, 여기서 d는 n의 자릿수입니다.