라떼는말이야

[solved.ac 실버1] 1105_팔 (파이썬, 그리디) 본문

알고리즘/코딩 테스트

[solved.ac 실버1] 1105_팔 (파이썬, 그리디)

MangBaam 2022. 7. 7. 11:45
반응형

 

https://github.com/mangbaam/CodingTest

 

GitHub - mangbaam/CodingTest: 프로그래머스, 백준 등 코딩테스트 풀이를 기록하는 저장소입니다.

프로그래머스, 백준 등 코딩테스트 풀이를 기록하는 저장소입니다. Contribute to mangbaam/CodingTest development by creating an account on GitHub.

github.com

밑의 사진을 클릭하면 문제 링크로 이동합니다

 

문제

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

 

입력

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

 

출력

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

예제


나의 풀이

두 수를 a, b라고 하자.

a, b의 길이가 다르면 항상 0이다. 888 1888 로 주어졌을 때 1000과 같은 반례가 있기 때문이다.

그 외에는 앞에서부터 a와 b의 자릿수가 같을 동안 8의 개수를 세면 된다.

예를 들어 18,878,183 ~ 18,878,283 이 주어졌을 때 두 수 모두 앞의 18878 까지는 동일하다. 여기서 8의 개수를 세면 3이 된다. 달라지는 수부터는 8이 없는 경우가 존재하게 된다. 18,878,200 과 같이 말이다.

a, b = input().split()
if len(a) == len(b):
    count = 0
    for i in range(len(a)):
        if a[i] != b[i]: break
        if a[i] == '8': count += 1
    print(count)
else:
    print(0)

채점 결과

반응형
Comments