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 |