[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을 출력하면 됩니다.
이러한 형식을 바탕으로 다음과 같은 규칙을 찾을 수 있습니다.
- 두 숫자의 길이가 다르면 8을 하나도 포함하지 않는 숫자가 존재하므로 0 출력
- 두 숫자의 길이가 같을 때
- 두 숫자의 값이 다른 경우 (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)
블로그의 정보
개발하는 두부
뚜부니