백준 단계별문제/문자열/ 파이썬 백준 1065 한수

suhyeon chae·2022년 1월 5일
0

https://www.acmicpc.net/problem/1065


def hansu(N):
    count = 0 # 한수의 개수 초기값
    
    for i in range(1, N + 1): # 1부터 ~ N까지 포함이 되어야 하므로 범위를 N + 1 까지 해줌
        array = list(map(int, str(i))) # 숫자를 문자로 변환한 뒤 하나씩 쪼갠 후 숫자로 다시 변환 
        if i < 100 :    # 100 이하 숫자들은 차이가 다 1로 모두 동일하므로 모두 한수임
            count += 1 
        elif (array[1]-array[0]) == (array[2]-array[1]): # 뒤 숫자랑 차이를 비교 , 3자리수까지 고려. 1000은 한수가 아님 
            count += 1
    return count

N = int(input()) # 숫자 입력 
print(hansu(N)) 

  • 알고리즘 초보인 나에게 어려웠던 아래 코드
array = list(map(int, str(i)))
  • 이 코드는 for문의 i를 문자로 변환 해서 쪼개고 정수로 변환해주는 코드
  • 사용한 이유는 각 숫자를 인덱싱하기위해서

ex ) i = 999일 때 ['999'] -> ['9', '9', '9'] -> [9, 9, 9] 이런식으로 이해했음

  • 이렇게 인덱싱 할 수 있도록 해야
    (array[1]-array[0]) == (array[2]-array[1]) 이것처럼 인덱싱하여 앞뒤 숫자끼리 차이를 비교할 수 있음
profile
예비 클라우드 & 백엔드 개발자 !

0개의 댓글

관련 채용 정보