반응형
코드
def hansu(n):
count = 0
for i in range(1, n+1):
n_list = list(map(int, str(i)))
if i < 100:
count += 1
elif n_list[0] - n_list[1] == n_list[1]-n_list[2]:
count += 1
return count
n = int(input())
print(hansu(n))
설명
등차수열에 대해 먼저 알아야한다.
등차수열은 숫자들의 간격이 동일한 나열인 상태여야한다. ex)123, 135, 369 각 숫자들이 서로 일정하게 간격을 유지해야한다.
두 자리 숫자는 등차수열이라고 비교할 숫자들이 없기 때문에 모두 한수이다.
한수가 몇 개인지 확인하기 위해 count = 0으로 해준다.
1부터 입력받은 n번만큼 반복하기 위해 n+1을 해준다.
map함수는 문자형을 입력받아야하기 때문에 str()을 통해 i를 문자형으로 만들어주고 타입을 int로 지정해서 문자열 -> 정수형 이런 흐름으로 만들어준다. 그리고 이것을 list로 묶는다.
i가 100아래는 모두 한수이기 때문에 100이하에서는 count를 세고,
슬라이싱을 이용해 첫번 째 수와 두번 째 수의 차가 두번 째 수와 세번 째 수의 차와 같다면 이것은 등차수열이라고 할 수 있다. ex) 123 => 1-2 = -1, 2-3=-1
마지막에 count를 리턴해서 n값을 입력받고 그 n을 함수에 바로 넣어 계산한다.
'알고리즘' 카테고리의 다른 글
[Python] 백준 11720번: 숫자의 합 (0) | 2023.02.08 |
---|---|
[Python] 백준 11654번: 아스키 코드 (0) | 2023.02.07 |
[Python] 백준 15596번: 정수 N개의 합 (0) | 2023.02.06 |
[Python] 백준 4344번: 평균은 넘겠지 (0) | 2023.02.06 |
[Python] 백준 8958번: OX퀴즈 (0) | 2023.02.05 |
댓글