[BOJ]백준#1105 Silver 1 팔 8⃣ (Python, 파이썬)

임준성·2022년 6월 6일
0

백준 Algorithm

목록 보기
23/59
post-thumbnail

백준 1105번
https://www.acmicpc.net/problem/1105


문제



후기

⏰ 풀이시간 30분 ++⏰

근래 풀었던 문제 중, 정답 비율이 상당히 낮은 문제에 속했다.

L ~ R 사이의 숫자 중에서 8이 아예 나오지 않는 경우의 수에는 무조건 0을 출력하면 된다를

기본적인 개념으로 생각했다. L의 길이가 R의 길이보다 짧으면 무조건 8이 아예 없는 경우를

찾을 수 있었다.

EX)

L=8 R= 61 -> 9

L= 35 R= 150 -> 67

L= 888 R = 8888 -> 999

다음으로는 가장 적게 들어있는 경우에 대해서다. 이는

L의 맨 앞자리가 R이랑 다른 경우, 바로 반복문을 탈출하여 0을 출력할 수 있게 하였고,

그렇지 않다면 앞자리 부터 8의 개수를 세면서 최종적으로 출력할 수 있게 만들었다.

L이 789고 R이 899 라고 했을 때, 앞자리가 다른 순간 바로 790 이라는 수를 만들 수 있기 때문이다.

떠올리는 과정이 난해했을 뿐 구현 자체는 어렵지 않은 문제였다.

나의 풀이

import sys

input = sys.stdin.readline

L, R = map(str,input().split())

cnt = 0

if len(L) != len(R):

    print(0)

else:

    for i in range(len(L)):

        if L[i] != R[i]:

            break
        
        else:

            if L[i] == "8":

                cnt +=1
    
    print(cnt)
profile
아무띵크 있이

0개의 댓글