728x90
반응형
BaekJoon 백준 1065 한수 문제는 어떤 양의 정수의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 구하는 문제로 브루트 포스 알고리즘 활용 문제이다. 난이도는 Silver 4이다.
BaekJoon 1065 한수 문제 정보
출처
- https://www.acmicpc.net/problem/1065
알고리즘 분류
- 브루트 포스 알고리즘 (brute force algorithm)
난이도
- 실버 4 / Silver 4
한수 문제 요약
- 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.
- 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.
- N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 구하여 출력한다.
- N은 1,000보다 작거나 같은 자연수이다.
문제 풀이 과정
- 1부터 N까지 100 미만이면 무조건 한수이므로 카운트한다.
- 100 이상이면, 문자열로 바꾸고 0, 1 번째 인덱스 값의 차이를 구하여 저장한다.
- 나머지 인덱스의 값들끼리의 차이가 모두 같다면 한수이므로 카운트한다.
- 차이가 하나라도 다르면 한수가 아니므로 다음 수를 탐색한다.
- N까지 모두 검사 후 한수의 개수를 출력한다.
코드 및 설명
- cnt - 한수의 개수
- isHansu - 한수인지 아닌지 여부
- diff - N의 1, 2 번째 자릿수의 차이
N = int(input())
cnt = 0
for i in range(1, N+1):
# 100 미만(한, 두자리 수)은 무조건 한수
if i < 100:
cnt += 1
# 100(세자리 수) 이상이면
else:
isHansu = True
i = str(i)
diff = int(i[0]) - int(i[1])
for n in range(1, len(i)-1):
if int(i[n]) - int(i[n+1]) != diff:
isHansu = False
break
if isHansu:
cnt += 1
print(cnt)
BaekJoon 백준 1065 한수 문제를 파이썬 python 브루트 포스 알고리즘으로 풀어보았다. 난이도는 Silver 실버 4이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 2231 분해합 (Python / 파이썬) (0) | 2021.09.15 |
---|---|
[BaekJoon] 백준 2798 블랙잭 (Python / 파이썬) (0) | 2021.09.15 |
[BaekJoon] 백준 15721 번데기 (Python / 파이썬) (0) | 2021.09.14 |
[BaekJoon] 백준 18868 멀티버스 1 (Python / 파이썬) (0) | 2021.09.08 |
[BaekJoon] 백준 18512 점프 점프 (Python / 파이썬) (0) | 2021.09.07 |
댓글