프로그래밍/백준

[파이썬(Python)] 백준 문제 풀이 1065 한수

정정훈훈 2024. 2. 12. 23:49
반응형

 

 

백준 1065번 한수 문제에 대한 파이썬(Python) 풀이입니다.

아래 답안은 참고만 해주시길 바랍니다.

 

https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

 

 

반응형
def count_hansu(x):
    count = 0
    for i in range(1, x+1):
        if 1 <= i < 100 :
            count += 1
        if 100 <= i < 1001 and i % 100 // 10 - i // 100 == i % 100 % 10 - i % 100 // 10:
            count += 1
    return count

N = int(input())

print(count_hansu(N))

 

 

count_hansu 함수

각 자리가 등차수열인 수를 '한수'라고 하는데,

한수의 각 자리들이 등차수열일 경우 count로 셀 겁니다.

 

 

 

한자리수인 숫자는 포함해줍니다(예시답안 확인)

두자리수인 숫자는 어떤 조합이어도 등차수열입니다.

2개의 수로 이루어진 수열이라고 할 수 있습니다.

3개 이상으로 이루어져 있지 않아 규칙성이 없기 때문에 등차수열이라 우길 수 있습니다(?)

15는 4만큼 차이나는 등차수열, 77은 0만큼 차이나는 등차수열인 겁니다.

 

세자리수는,

(i % 100) // 10 에서 i // 100을 뺀 값이

i % 100 % 10에서 i % 100 // 10을 뺀 값과 같을 경우 count를 1 더했습니다.

 

SMALL

%를 이용하면,

각 자릿수를 10^n으로 나눠 몫만 취해 각 자리의 숫자를 추출할 수 있습니다.

ex)

566 % 100 = 5

566 % 10 = 6

 

//를 이용하면,

각 자릿수를 10^n으로 나눠 나머지를 취해 남은 숫자를 추출할 수 있습니다.

ex)

566 // 100 = 66

566의 66을 추출할 수 있음

 

 

 

 

 

 

반응형