[백준/ 파이썬] 1105 팔

백준 1105번 팔

이번에 풀어볼 문제는 1105번 팔 문제입니다. 1105번 문제는 최적의 해를 찾는 그리디 문제입니다.
문제를 이해하는데에는 크게 어려움이 없고 머릿속으로 이렇게 저렇게하면 되겠다는 생각이 들것입니다.
우선 크게 보면 자릿수가 같을때와 자릿수가 다를때를 생각할 수 있습니다.
자릿수가 다르다면 8은 필요하지 않을것입니다.
그래서 우리가 생각을 해줘야 하는 부분은 자릿수가 같을때입니다.

자릿수가 같을때 어떻게 하면 원하는 답을 얻을 수 있을까요?
1. 해당 자릿수의 값이 같은지 비교한다.

  • 같다면 그리고 그 값이 8이라면 카운트를 해줘야 한다.
  • 같지만 8이 아니면 다음 자릿수를 1번에서 한것 처럼 생각해준다.

2.자릿수의 값이 서로 다르다면 그대로 끝입니다. 더이상 고려해줄 필요가 없는것이죠.

코드는 다음과 같습니다.

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

left = []
right = []

while True:
    if L//10 != 0:
        left.append(L%10)
        L //= 10
    if R//10 != 0:
        right.append(R%10)
        R //= 10

    if L//10 == 0 and R//10 == 0:
        left.append(L%10)
        right.append(R%10)
        break
cnt = 0
#자릿수가 같을때
if len(left) == len(right):
    cnt = 0
    #리스트에 숫자의 일의자리부터 인덱스0으로 저장되어 있다.
    #그래서 인덱스의 마지막 부분이 숫자의 가장 큰 부분이다.
    for i in range(len(left)-1, -1, -1):
        #자릿수의 값이 같다면
        if left[i] == right[i]:
            #그 값이 8인지 확인한다.
            if left[i] == right[i] == 8:
                cnt += 1
        #자릿수의 값이 틀리면. 더이상 고려해주지 않아도 된다.
        else:
            break
print(cnt)

좋은 웹페이지 즐겨찾기