개발하는 두부

[BOJ] 1105.팔 (Python)

by 뚜부니

 

 

1105번: 팔

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

www.acmicpc.net

 

이 문제는 L부터 R까지의 수 중 8이 가장 적게 들어가는 수의 8 개수를 출력하는 문제입니다.

 

즉, L이 1이고 R이 10이면, 1부터 10 중 8이 가장 적게 들어가는 수는 8을 제외한 모든 수이며, 각각의 숫자에 8이 포함되어 있지 않으므로 0을 출력하면 됩니다.

 

이러한 형식을 바탕으로 다음과 같은 규칙을 찾을 수 있습니다.

 

  1. 두 숫자의 길이가 다르면 8을 하나도 포함하지 않는 숫자가 존재하므로 0 출력
  2. 두 숫자의 길이가 같을 때
    • 두 숫자의 값이 다른 경우 (L = 234, R = 381) 8을 하나도 포함하지 않는 경우가 발생하므로 0 출력
    • 두 숫자의 값 일부가 같을 때 (L = 880, R = 889) 백의 자리 8을 제외하고 나머지 자리는 8을 포함하지 않는 경우가 발생하므로 1 출력
    • 두 숫자의 값이 같을 때, 포함하고 있는 8 세기

규칙을 기반으로 코드를 작성하면 다음과 같습니다.

import sys
input = sys.stdin.readline

L, R = input().split()
Llen, Rlen = len(L), len(R)
cnt = 0
if Llen != Rlen :
    print(cnt)
else :
    for i in range(Llen) :
        if L[i] != R[i] :
            break
        else :
            if L[i] == '8' :
                cnt += 1
    print(cnt)
 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 14890.경사로 (Python)  (0) 2021.04.20
[BOJ] 1929.소수구하기 (Python)  (0) 2021.04.19
[BOJ] 12110.2048(Easy)  (0) 2021.04.19
[BOJ] 13549.숨바꼭질 3 (Python)  (0) 2021.04.18
[BOJ] 1918.후위표기식 (Python)  (0) 2021.04.17

블로그의 정보

개발하는 두부

뚜부니

활동하기