코드치고 무게치고

[백준 python] 1105번 팔 - 그리디 본문

개발공부/코딩테스트 준비

[백준 python] 1105번 팔 - 그리디

코딩하자영아 2022. 3. 9. 21:23

[백준 python] 1105번 팔 - 그리디

레벨: 실버1

언어: python


문제풀러가기

📑풀이 과정

이러한 문제는 예시를 몇개 넣어보면서 조건에 맞는것을 찾아보면 풀이 방법이 떠오른다.


핵심은 반드시 8이 들어가는 곳의 수를 찾아서 출력하면된다.

 

먼저 두 수의 자리수가 같은지 확인한다.
자리수가 다르면 무조건 0이 나올 수 밖에 없다.

ex) 8 10 -> 9나 10이 선택 됨으로 무조건 0이 나옴

 

그리고 자리수가 같을 때는 앞자리부터 확인한다.

이때 앞자리가 같으면서 8인 경우가 8이 꼭 들어가야만 하는 자리이다.

ex) 80 88 1개, 888 889 2개

앞 자리부터 공통으로 들어가는 8의 수를 확인

 

그리고 앞자리가 같으면서 8이 아닌 경우는 뒤에 8이 있는지 확인해야한다.

ex) 1878 1888 1개

위 경우 백의자리와 1의 자리가 8이지만 십의 자리가 달라 1879 ~ 부터 8이 1개인 수가 존재한다.

 

자리가 다른 숫자이면 비교를 멈추고 8의 개수를 출력하면된다.

📋풀이 코드

import sys

input = sys.stdin.readline

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

print(L, R)

if len(L) != len(R):
  print(0)
else:
  cnt = 0
  for i in range(len(L)):
    if L[i] == R[i] and L[i] !='8':
      continue
    if L[i] == '8' and R[i] =='8':
      cnt+=1
    else:
      break
  print(cnt)

Comments