백준 1105:팔

양말신은도비·2022년 7월 12일
0

알고리즘

목록 보기
3/4

문제

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

입력

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

출력

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

풀이

생각할 수 있는 경우는 크게 2가지이다.

  • L과 R의 자리수가 다른 경우
  • L과 R의 자리수가 같은 경우

L과 R의 자리수가 다르다면, 8이 안들어가는 수가 무조건 나올 수 있기 때문에 둘의 자리수를 비교한 후, 동일하지 않다면 0을 출력해주면 된다.

만약 자리수가 같다면, 8이 들어갈 수 밖에 없는 경우를 생각하면 된다. L과 R을 비교하였을 때 둘 다 같은 자리에 8을 가지고 있다면, 무조건 8이 나올 수 밖에 없다. 따라서 +1을 해주면 된다. 하지만 둘의 숫자가 같은데 8이 아니거나 다르다면 8이 아닌 다른 수가 들어갈 수 있기 때문에 +1을 해주면 안된다.

코드

L, R = map(int, input().split())
sol = 0

if len(str(L)) != len(str(R)):
    print(0)
else:
    Lp = str(L)
    Rp = str(R)
    
    for i in range(len(Lp)):
        if Lp[i] == Rp[i]:
            if Lp[i] == '8':
                sol += 1
        else:
            break
    print(sol)

0개의 댓글