Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [1065] - 한수

yaebb_82 2022. 8. 10.

 

 

 

문제

 

 

 

작성한 코드

import sys

input = sys.stdin.readline
count = 0

def hansu(N):

    if N < 100:
        count = N

    else:
        count = 99

        for i in range(100, N+1):
            hansu = list(map(int, str(i)))

            if hansu[0]-hansu[1] == hansu[1]-hansu[2]:
                count += 1

    return count

N = int(input())
print(hansu(N))

- sys.stdin.readline을 input에 할당하여 사용하였다.

- 한수의 개수를 나타내는 변수 count를 0으로 초기화시켰다.

- input()을 문자로 입력받고, int형으로 형변환하여 N에 저장한다.

- N을 함수 hansu()의 매개변수로 사용하여, 함수 hansu()의 return 값을 print()로 출력한다.

- def hansu(N): N이 100 미만일 경우와 아닌 경우로 조건을 나누었다.

- N이 100 미만일 경우

   : 2자리 수의 경우 (1~99) 모두 등차수열에 해당되기 떄문에, 한수의 개수인 count는 N(개)이다.

- N이 100 이상일 경우

   : 1~99일때 count의 최대값은 99이기 떄문에, 100부터는 일단 count는 99부터 시작해야 한다.

   : for i in range(100, N+1): 100부터 N까지 i에 넣어 차례대로 반복문 for문을 돌려 list인 hansu에 각 자리에 해당하는 숫자들을 인덱스 별로 저장한다.

   : hansu[0] = 백의 자리 / hansu[1] = 십의 자리 / hansu[2] = 일의 자리

   : hansu[0]-hansu[1] 의 값과 hansu[1]-hansu[2]의 값이 같다면 한수이기 떄문에, count를 1씩 증가시켜준다.

- 함수 hansu는 count의 값을 return 해주고, print()로 출력한다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

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

댓글