알고리즘 문제

[Python]1105번.팔(그리디)

Everyday Happy ❤︎ 2024. 1. 26. 12:14
 

1105번: 팔

첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

💡문제

L과 R이 주어진다. 이때, L보다 크거나 같고, R보다 작거나 같은 자연수 중에 8이 가장 적게 들어있는 수에 들어있는 8의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 L보다 크거나 같고, R보다 작거나 같은 자연수 중에 8이 가장 적게 들어있는 수에 들어있는 8의 개수를 구하는 프로그램을 작성하시오.

풀이💬

규칙 1. 두 숫자의 길이가 다른 경우

→ 8을 하나도 포함하지 않는 숫자가 존재하기 때문에 0 출력

 

규칙2. 두 숫자의 길이가 같은 경우

→ 두 숫자의 값이 다른 경우 8을 하나도 포함하지 않는 경우가 발생하므로 0 출력

→ 두 숫자의 값 일부만 같을 때 백의 자리 8을 제외하고 나머지 자리는 8을 포함하지 않는 경우가 발생하므로 1 출력

→ 두 숫자의 값이 같을 때, 포함하고 있는 8 count 하기

L, R = input().split()
x, y = len(L), len(R)

cnt = 0
if x != y:
    print(cnt)
else:
    for i in range(x):
        if L[i] != R[i]:
            break
        else:
            if L[i] == '8':
                cnt += 1
    print(cnt)