Notice
Recent Posts
Recent Comments
Link
초보 개발자의 일기
1065번 - 한수 본문
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
나의 제출 - Python
함수 단계의 마지막 문제이다. N을 입력하면, 그보다 작거나 같은 한수의 개수를 출력하는 함수를 만든다.
def solution(): # 함수 정의
N = int(input()) # 변수 정의
X = [str(x) for x in range(1,N+1)]
i = 0
for x in X:
if len(x)<2: # 1자리 숫자의 경우 모든 수가 '한수'이므로 1로 저장
i += 1
else:
Solve = {int(x[-s]) - int(x[-s-1]) for s in range(1,len(x))} # 집합 컴프리헨션
if len(Solve) == 1:
i += 1
return(i) # return(print(i))로 수정 가능
print(solution()) # 윗줄 수정 시 solution()으로 수정
1자리 숫자의 경우 모든 수가 '한수'이므로 1로 저장한다. 그 외의 경우 집합 컴프리헨션을 이용하여 반복 숫자계산을 실행한다. 그리고 그 차는 집합인 Solve에 저장되는데, 집합은 중복을 허용하지 않기 때문에 len(Solve)를 이용하면 집합 안에 몇 개의 숫자가 있는지 알 수 있다. 이 때 숫자가 1개 있다면, 그 수는 모든 자리수에 대해 등차수열을 이루고 있기 때문에 '한수'의 개수(i)를 증가시킨다.
110 <- 입력
99 <- 출력
'열공일기 > 코딩연습' 카테고리의 다른 글
11720번 - 숫자의 합 (0) | 2021.05.18 |
---|---|
11654번 - 아스키 코드 (0) | 2021.05.17 |
4673번 - 셀프 넘버 (0) | 2021.05.14 |
8958번 - O,X 퀴즈 (0) | 2021.05.11 |
3052번 - 나머지 (0) | 2021.05.09 |
Comments