[백준] 1065번 - 한수

1. 한수

A. 문제

위 백준 사이트에 접속하여 문제를 확인해주세요.

a. 예를 들면.

N이 128일 때, 1부터 N 사이의 수 중 각 자리가 등차수열을 이루는 수는 다음과 같다.

1 => 수가 1 하나라서 공차가 0인 등차수열 2 => 수가 1 하나라서 공차가 0인 등차수열 3 => 수가 1 하나라서 공차가 0인 등차수열 ... 11 => 수가 2개이고 공차가 0인 등차수열 12 => 수가 2개이고 공차가 1인 등차수열 13 => 수가 2개이고 공차가 2인 등차수열 ... 111 => 수가 3개이고 공차가 0인 등차수열 123 => 수가 3개이고 공차가 1인 등차수열

b. 입력 조건
  • 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
c. 출력 조건
  • 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
d. 테스트 케이스
  • 입력 예시

    
    110
    
    
    
    210
    
    
  • 출력 예시

    
    99
    
    
    
    105
    
    

B. 내 답안


x = int(input())  
total_count = 0  
  
for i in range(1, x+1):  
    str_a = str(i)#list(map(int, str(i)))  
    # d = 0
    if len(str_a) > 1:  
        d = int(str_a[1:2]) - int(str_a[0:1])  
        count = 0  
        for j in range(1, len(str_a)):  
            if int(str_a[j]) - int(str_a[j-1]) == d:  
                count += 1  
    else:  
        count = 0  
    if count == len(str_a)-1:  
        total_count += 1  
  
print(total_count)  
  
# 문제 이해가 어려웠던 문제.  


a. 회고

풀이

  • 1~N까지 for문에 돌리면서 각 자리수를 1의 자리 숫자로 보고 등차를 구해서 등차가 반복된다면 성공. 아니면 실패.

반성

  • 문제 이해가 어려웠던 문제.

참고문헌

baekjoon. 1065번: 한수 (acmicpc.net). Baekjoon. (accessed Sep 5, 2021)

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.