1065. 한수
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
- 내 풀이
#11,22,..
#2자리수 다되고 1~99
#111,123, 135, 147,159, 210(-1)
from collections import deque
n=int(input())
if n<100:
lst=set([i for i in range(1,n+1)])
else:
lst = set([i for i in range(1, 100)])
k=100
while k<=n:
l = len(str(k))
strk=list(str(k))
minusk=list(str(k))
for j in range(5):
flag=1
for i in range(l-1):
strk[i+1]=str(int(strk[i])+j)
if int(minusk[i]) - j <0:
flag=0
minusk[i + 1] = str(int(minusk[i]) - j)
intk=int(''.join(strk))
if intk<=n and intk not in lst:
lst.add(intk)
if flag==0: continue
intk2 = int(''.join(minusk))
if intk2<=n and intk2 not in lst:
lst.add(intk2)
k+=10**(l-1)
print(len(lst))
- 다른 사람 풀이
- 1에서 n까지 전부 확인
- 각 자리수가 등차수열인지 확인
- n이 1000 미만이니까 3자리만 확인하면 됨
- num_list[0]-num_list[1] == num_list[1]-num_list[2]
num = int(input())
hansu = 0
for i in range(1, num+1):
num_list = list(map(int, str(i)))
if i < 100:
hansu += 1 # 100보다 작으면 모두 한수
elif num_list[0]-num_list[1] == num_list[1]-num_list[2]:
hansu += 1 # x의 각 자리가 등차수열이면 한수
print(hansu)
'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준] [이분탐색] 10816. 숫자 카드 2 (0) | 2023.04.27 |
|---|---|
| [백준] [구현] [완전탐색] 1018. 체스판 다시 칠하기 (0) | 2023.04.27 |
| [백준] [정렬] 1744. 수 묶기 (0) | 2023.04.22 |
| [백준][BFS][그룹화] 2146. 다리만들기 (0) | 2023.04.22 |
| [백준] [BFS] [그룹화] 16946. 벽 부수고 이동하기 4 (0) | 2023.04.22 |