본문 바로가기

Coding Test

[백준]1065번 한수

[백준]1065번 한수

1065번: 한수

 

1065번: 한수

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

www.acmicpc.net

문제

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

입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

 

풀이

하나의 정수(1,000보다 작거나 같은 자연수 N)를 입력 받아서 N 수 전까지 한수가 몇개인지 출력해야합니다.

한수 = 어떤 정수의 자리수가 등차수열을 이루는 수.

  • 1 → 비교할 다른 자리가 없다. → 1개 (한자리 수는 모두 한수이다.)
  • 52 → 비교할 다른 자리가 없다. → 52개 (두자리 수는 모두 한수이다.)
  • 123 → (3 - 2) == (2 - 1) 한수가 성립한다. → 101개 (100이후 한수는 111, 123)
  • 112 → (2 - 1) ≠ (1 - 1) 한수가 성립하지 않는다. → 100개 (100이후 한수는 111)

99까지 2자리 수는 등차수열인지 판단할 다른 자리 수가 없기 때문에 모두 한수이다.

100이후 3자리 수는 각 자리 수를 비교해 등차수열을 판단해야하고 등차수열이 성립하면 한수이다.

[BaekJoon/C] 백준 1065번 한수

 

[BaekJoon/C] 백준 1065번 한수

이번 포스팅은 백준 알고리즘 사이트의 1065번 한수 문제를 C 언어로 코딩해보도록 하겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다. https://www.acmicpc.net/problem/1065 이번 포스팅은 지난 포

gabii.tistory.com

N = int(input())
hansu = 0

for i in range(1, N+1):
	if i <= 99: # 99까지는 모두 한수
		hansu += 1
	
	else:
		N = list(map(int, str(i))) # 자릿수대로 숫자 분리
		if N[0] - N[1] == N[1] - N[2]:
			hansu += 1

print(hansu)

'Coding Test' 카테고리의 다른 글

[백준] 11720번 숫자의 합  (0) 2022.01.26
[백준]11654번 아스키코드  (0) 2022.01.25
[백준]4673번 셀프 넘버  (0) 2022.01.24
[백준]15596번 정수 N개의 합  (0) 2022.01.24
[백준]4344번 평균은 넘겠지  (0) 2022.01.24