티스토리 뷰

Algorithm/Math

(Python) - BOJ(1105번) : 팔

하눤석 2022. 1. 25. 15:43
728x90

https://www.acmicpc.net/problem/1105

 

1105번: 팔

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

www.acmicpc.net


  • 해설 : 

자연수 L과 R이 주어질 때 L보다 크거나 같고 R보다 작은 자연수들 중 8이 가장 적게 들어있는 경우의 8의 개수를 찾는 문제이다. 

 

 

 


  • 풀이 :

L의 자릿수만큼 for문을 반복하여 L과 R의 자릿수를 각각 비교한다. 이 때, 자릿수가 다르다면 그 때까지 8의 개수를 센 값을 출력하고 아니라면 L 과 R의 자릿수가 모두 8인지 확인한다. 

이는 L이나 R의 자릿수가 둘 다 8이 아니면 다른 수를 넣어 8이 아니게 만들 수 있기 때문이다.

 

자릿수가 다를 때 정답을 출력하는 이유는 자릿수가 달라졌을 때 그 뒤의 숫자는 아무거나 와도 상관이 없다는 의미이기 때문이다.

 

 

 


  • 소스코드 : 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
input = sys.stdin.readline
 
if __name__ == "__main__":
    L,R = input().split()
    cnt = 0
    if len(L) < len(R):
        print(0)
    else:
        for i in range(len(L)):
            if L[i] != R[i]:
                break
            if L[i] == '8' and R[i] == '8' :
                cnt+=1
        print(cnt)
cs
320x100
댓글
© 2022 WonSeok, All rights reserved