본문 바로가기

코드연습/BOJ

BOJ 1065 : 한수

728x90

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 

def hansu(N):
    if len(N) >= 2:
        diff_temp = int(N[0]) - int(N[1])
    else:
        diff_temp = int(N[0])
    for i in range(1, len(N) - 1):
        if diff_temp == int(N[i]) - int(N[i+1]):
            diff_temp = int(N[i]) - int(N[i+1])
        else:
            return
    return N


if __name__ == "__main__":
    N = int(input())
    count = 0
    for i in range(1, N+1):
        if hansu(str(i)):
            count += 1
    
    print(count)

일단 한수를 판단하는 함수(hansu)를 만들고, 첫 자리 수를 구분하여 temp를 미리 만들어 뒀다. 이후 temp에 닮긴 것과 다음 수와의 차이를 비교하고, 맞으면 temp에 다시 담고 패스, 아니면 return을 하는 반복문을 만들었다. 마지막으로 그때의 값이 True일 때(0 < N)를 count하여 문제를 해결했다.

'코드연습 > BOJ' 카테고리의 다른 글

BOJ 1316 : 그룹 단어 체커  (0) 2022.04.08
BOJ 2941 : 크로아티아 알파벳  (0) 2022.04.08
BOJ 2908 : 상수  (0) 2022.04.07
BOJ 2675 : 문자열 반복  (0) 2022.04.07
BOJ 4673 셀프넘버  (0) 2022.04.06