[백준/ 파이썬] 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)
Author And Source
이 문제에 관하여([백준/ 파이썬] 1105 팔), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rooster100/백준-파이썬-1105-팔저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)