[BOJ] - 1065
문제 1065번
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
코드
n = int(input())
num = 0
for i in range(1,n+1): #n+1를 한이유는 n이 1000이면 1부터 999까지 돌기때문
if i < 100: #100보다 작은 수일때는 비교수가 없기 때문에 무조건 등차수열인 한수.
num += 1
elif (i//100 - i%100//10) == (i%100//10 - i%10): # 함수로 빼면 더 좋음.
num += 1
print(num)
설명
- 등차수열: 연속된 두 개의 수의 차이가 일정한 수열
- 한수: 숫자 n이 주어졌을 때 각 자리수가 등차수열을 이룬다면 한수
즉, 1부터 1000의 수 중에서 100보다 작은 수들은 비교할수가 없고 무조건 등차수열이라서 한수.
-
100보다 작은 수는 다 한수로 카운트
-
100자리수- 10자리수 == 10자리수 - 1의자리수가 같을 때를 이용해 한수 개수를 구함. 이때 나머지 연산자(//)와 몫 연산자(%)를 이용해서 구함.
-
처음에 저 한수 개념이 이해가 안가고, 숫자를 str로 풀려고해서 너무 어려움을 겪음,,
-
n+1를 한이유는 n이 1000이면 1부터 999까지 돌기때문이다.
Author And Source
이 문제에 관하여([BOJ] - 1065), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@byhazy/BOJ-1065-7nd1m3w3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)