[BOJ] 한수(python)

.·2022년 6월 9일
0

문제 링크 - https://www.acmicpc.net/problem/1065


사고 과정

  • 우선 숫자의 길이가 3 이상과 미만으로 나누어 풀었다. 숫자의 길이가 3미만인 경우(1~99)에는 모두 수열의 길이가 1인 등차수열이므로 그냥 바로 그 숫자를 출력했다.
  • 숫자의 길이가 3 이상인 경우(100~)에는 1~99까지는 모두 포함되므로 cnt를 99로 두고 시작했다. 100부터 n+1까지 반복문을 돌면서 첫번째 자리수와 두번째 자리수의 차이를 check 변수에 담아두었다. 그리고 숫자를 돌면서 만약 자리수의 차이가 check와 다르면 break, 반복문을 다 돌았다면(각 자리수의 차이가 check와 다 같음) cnt에 +1을 해주었다.

나의 풀이

n = int(input())

cnt = 0
if len(str(n)) > 2:
    cnt = 99
    for number in range(100, n+1):
        check = int(str(number)[0]) - int(str(number)[1])
        for i in range(1, len(str(number))-1):
            if int(str(number)[i]) - int(str(number)[i+1]) == check:
                continue
            else:
                break
        else:
            cnt += 1
    print(cnt)
else:
    print(n)

0개의 댓글