728x90
https://www.acmicpc.net/problem/1065
가장 먼저 생각해본 부분은 100미만의 수이다.
만약 0~9라면 무조건 비교할 수가 없기에 무조건 한수가 될 것이다.
만약 10~99라면 수가 2개 밖에 되지 않기 때문에 무조건 한수가 될 것이다.
그렇기 때문에 해당 수들은 모두 한수로 처리를 해주고 들어가야 한다.
def hansoo(num):
hansoo_list = []
while num > 0:
hansoo_list.append(num % 10)
num //= 10
for t in range(len(hansoo_list) - 2):
if hansoo_list[t+1] - hansoo_list[t] != hansoo_list[t+2] - hansoo_list[t+1]:
return False
return True
우선 해당 수가 한수인지 판별해주는 함수이다.
만약 100 미만의 수가 들어오면 배열의 크기가 2 이하가 되기 때문에 무조건 True가 반환되게 된다.
100 이상의 수가 들어오게 된다면, 해당 수를 모두 쪼개서 배열에 저장한다.
그리고 반복문을 통해 간격이 다른 구간이 있다면 바로 False를 반환한다.
import sys
N = int(sys.stdin.readline())
result = 0
def hansoo(num):
hansoo_list = []
while num > 0:
hansoo_list.append(num % 10)
num //= 10
for t in range(len(hansoo_list) - 2):
if hansoo_list[t+1] - hansoo_list[t] != hansoo_list[t+2] - hansoo_list[t+1]:
return False
return True
for i in range(1, N + 1):
if hansoo(i):
result += 1
print(result)
이렇게 전체 코드이다.
입력한 수에 따라 반복문으로 한수의 개수를 찾아서 출력하게 된다.
'알고리즘 > 브루트포스' 카테고리의 다른 글
백준 1182 부분수열의 합 (0) | 2024.01.15 |
---|---|
백준 4675 셀프 넘버 (1) | 2024.01.15 |
게임판 덮기 (0) | 2022.09.17 |
소풍 (1) | 2022.09.16 |
보글 게임 (1) | 2022.09.16 |