728x90
출처: www.acmicpc.net/problem/1065
한수 분류
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
2 초 | 128 MB | 62876 | 32290 | 27487 | 51.576% |
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제 입력 1
110
예제 출력 1
99
예제 입력 2
1
예제 출력 2
1
한수를 자릿수로 생각해본다면 이해가 더 쉬울 것이다.
예를 들어, 1의 경우 비교할 다른 수가 없다. 따라서 한자리 수는 모두 한수라고 볼 수있다.
그리고 21 또한, 비교할 다른 자리 수가 없다. 두자리 수도 모두 한수이다. 그 다음으로는 246을 봐보자.
각 자리 수의 차는 2로 한수가 성립한다. 이렇게 (백의자리 수-십의자리 수)와 (십의자리 수-일의자리 수)가 같을 경우를 찾아주면 된다.
따라서 i가 100보다 작다면 한수 count에 +1을 해준다.
그리고 나서 세자리 숫자에 대한 계산을 나타내주면된다.
1 2 3 4 5 6 7 8 9 10 | n = int(input()) Hcount= 0 for i in range(1, n + 1): if i < 100: Hcount+= 1 else: ns = list(map(int, str(i))) if ns[0] - ns[1] == ns[1] - ns[2]: Hcount+= 1 print(Hcount) | cs |
728x90
'Baekjoon Online' 카테고리의 다른 글
[python] 백준 2576번_홀수 (0) | 2021.01.24 |
---|---|
[python] 백준 1157번_단어 공부 (0) | 2021.01.23 |
[python] 백준 1057번_토너먼트 (0) | 2021.01.21 |
[python] 백준 2908번_상수 (0) | 2021.01.20 |
[python] 백준 2675번_문자열 반복 (0) | 2021.01.19 |