728x90
문제) 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.
등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.
N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
def solve(num):
hansu_cnt = 0
for i in range(1, num+1):
num_list = list(map(int,str(i)))
if i < 100: # 100 미만은 모두 한수
hansu_cnt += 1
elif num_list[0]-num_list[1] == num_list[1]-num_list[2]: # 등차수열의 특징
hansu_cnt += 1
return hansu_cnt
num = int(input())
print(solve(num))
이번 문제는 한수의 개념에 대해 알아야한다. 등차수열을 구현할 줄 알아야하는 것이 제일 중요하다.
처음 def solve(num)으로 선언을 한 후 hansu_cnt = 0 을 선언하여 초기화를 해주었고 for 문에서 1보다 크거나 같고,
n보다 작거나 같아야하기 때문에 num + 1을 범위로 잡았습니다.
그리고 num_list를 통해 입력값을 받게 하였습니다.
100미만의 값은 모두 한수이기 때문에 if문을 통해 100미만일 때 카운트하고,
첫번째 배열 - 두번째 배열이 두번째 배열 - 세번째 배열과 같다면 카운트를 한다.
이 과정을 return으로 반복하고, 마무리한다.
그 후 num 값을 입력하고, print(solve(num())을 통해 출력한다.
이번 문제는 제 기준에서 난이도가 꽤 있는 문제인 것 같다. 한번씩 곱씹으면서 다시봐야겠다는 생각이 든다.
이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!
728x90
'알고리즘 > 백준 - 파이썬' 카테고리의 다른 글
백준) 11720번 숫자의 합 문제 (파이썬) (0) | 2022.05.31 |
---|---|
백준) 11654번 아스키 코드 문제 (파이썬) (0) | 2022.05.31 |
백준) 4673번 셀프 넘버 문제 (파이썬) (0) | 2022.05.31 |
백준) 15596번 정수 N개의 합 문제 (파이썬) (0) | 2022.05.30 |
백준) 4344번 평균은 넘겠지 문제 (파이썬) (0) | 2022.05.30 |
댓글