문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제 입력 1
110
예제 출력 1
99
예제 입력 2
1
예제 출력 2
1
예제 입력 3
210
예제 출력 3
105
예제 입력 4
1000
예제 출력 4
144
예제 입력 5
500
예제 출력 5
119
코드
def hansu(x):
cnt = 0
for i in range(1,x+1):
b = list(map(int,str(i)))
if i<100 :
cnt += 1
elif b[0] - b[1] == b[1] - b[2] : cnt += 1
return cnt
a = int(input())
print(hansu(a))
def 를 쓰면 더 쉽게 풀리는 문제였음.
cnt를 동기 중에 한명이 자주 쓰길래 나도 써봤음. 갯수를 세는데 난 약간 len을 주로 쓴 것 같은데 if ~~ : cnt+=1을 쓰니깐 개수세기가 굉장히 수월해지고 코드도 굉장히 가벼워졌음.
아빠한테 def 제대로 못쓴다고 혼났는데 연습을 좀 하니까 괜찮게 쓰고 있는 것 같아 기분이 좋음.
궁금한건 b=list(map(int,str(i)))이렇게 들어가는데 i가 str->int->map->list이렇게 되는 구조인가? 이건 걍 하다보면 자연스레 알게 될듯. 내 생각에 대한 확신이 없는듯. 더 열심히해야지.
'Algorithm' 카테고리의 다른 글
[백준] 2675번- 문자열 반복 (Python) (0) | 2022.05.01 |
---|---|
[백준] 11720번-숫자의 합 (Python) (0) | 2022.05.01 |
[백준] 10951번-A+B-4 (Python) (0) | 2022.04.26 |
[백준] 10950번-A+B-3 (Python) (0) | 2022.04.24 |
[백준] 2739번-구구단 (Python) (0) | 2022.04.24 |