일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- BFS
- dp
- 프로그래머스
- 자료구조
- 반복문
- solvedac
- 그래프
- DFS
- 다이나믹프로그래밍
- 코테
- greedy
- Baekjoon
- 알고리즘
- 수학
- 정렬
- 문자열
- 파이썬
- 데이터마이닝
- PYTHON
- 문제풀이
- 그래프탐색
- Datastructure
- 코딩테스트
- 그리디
- 그리디알고리즘
- 백준
- 큐
- 깊이우선탐색
- 너비우선탐색
- DP알고리즘
- Today
- Total
nyunu
[python] 1105, 팔 : 수학, 그리디 본문
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과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다.
[출력]
첫째 줄에 L보다 크거나 같고, R보다 작거나 같은 자연수 중에 8이 가장 적게 들어있는 수에 들어있는 8의 개수를 구하는 프로그램을 작성하시오.
[예제]
[풀이]
💡 문제 요약 : l과 r 사이 8이 가장 적게 들어있는 수의 8 개수를 구하기
💡 풀이 포인트
( 1 ) 두 수의 길이가 다르면 무조건 8이 들어가지 않는 수가 존재한다 (Ex. 100 & 1000) >> 0
( 2 ) 두 수의 길이가 같을 때는 큰 자릿수부터 확인해본다 >> 요기가 포인트 !
두 수의 길이가 같을 때 큰 자릿수부터 확인해야 하는 이유는 큰 자릿수에서 동일한 값을 가지고 & 8을 가지면 이때의 8의 개수는 무조건 포함되는 값이기 때문이다. 그리고, 큰 자릿수부터 확인하다가 동일한 값을 가지지 않는다면 그 즉시 반복문을 멈추고 결과를 반환한다.
예시를 통해 이해하면 더 쉽다.
Ex1. 8808 ~ 8818 : 8808, 8809, 8810 ... 8818 >> 88__이며, 천의자리, 백의자리 88만 고정된 8의 개수
Ex2. 4011 ~ 4122 : 4확인 > 0 != 1 반복문 break > answer = 0
l, r = map(str, input().split())
if len(l) != len(r):
print(0)
else:
answer = 0
for i in range(len(r)):
if l[i] == r[i]:
if l[i] == '8':
answer += 1
else:
break;
print(answer)
'코딩테스트_python' 카테고리의 다른 글
[python] 2212, 센서 : 그리디, 정렬 (1) | 2024.02.06 |
---|---|
[python] 1141, 접두사 : 그리디, 문자열, 정렬 (0) | 2024.02.02 |
[python] 20115, 에너지 드링크 : 그리디 (0) | 2024.02.02 |
[python] 1448, 삼각형 만들기 : 수학, 정렬, 그리디 (0) | 2024.02.02 |
[python] 4889, 안정적인 문자열 : 그리디, 문자열, 스택, 자료구조 (0) | 2024.02.02 |