반응형
문제 설명
입출력 예제
풀이 코드
처음에는 문제 설명을 이해하는게 어려울 것이다. (문제 설명이 좀 많이 아쉽;)
왜 110을 입력했을 때 결과가 99가 나오는지 이해할 수가 없었다.
하지만 왜 그러한 결과가 나오는지 이해만 한다면 문제는 실버난이도 답게 쉽게 풀 수 있을 것이다.
일단 "한수"라는 것은 각 자리수의 차이가 일정한 수이다.
111 이라는 수가 주어진다면 이 수는 각 자리수 차이가 0이므로 ㅠ이다.
그렇다면 5는 어떨까?
자리수를 비교할 대상이 없지만 이 수도 한수로 본다.
그 이유는 예제 입력2번의 입력이 1인데 결과가 1인 것에서 알 수 있다.
그렇다면 14는?
이 수도1 -> 4로 증가하는데 3씩 증가하는 등차수열로 보고 "한수"라고 할 수 있다.
그렇다면 이런 결론이 나온다.
- 1자리 ~ 2자리 수들은 모두 한수가 된다. ( 1 <= 한수 < 100 )
- 3자리수 부터 등차를 확인하는 비교 대상 수가 2개가 있으므로 3자리이상 수 부터 한수인지 확인하는 코드를 작성한다.
정답 코드
import sys
input = sys.stdin.readline
n = int(input())
cnt = 0
for i in range(1, n + 1):
if i < 100:
cnt += 1
if 100 <= i < 1000:
sep = list(map(int, str(i)))
if sep[0] - sep[1] == sep[1] - sep[2]:
cnt += 1
print(cnt)
'◼ 코딩테스트 > 완전탐색 (Bruteforce)' 카테고리의 다른 글
[Python/파이썬] 백준 14888번 - 연산자 끼워넣기 (0) | 2023.07.10 |
---|---|
[Python/파이썬] 백준 9663번 - N-Queen (0) | 2023.07.06 |
[Python/파이썬] 백준 1436 - 영화감독 숌 (0) | 2023.06.23 |
(javascript) 알고리즘 문제 - 완전탐색 (가장 많은 문제를 맞춘 수포자 찾기) (1) | 2022.09.18 |