본문 바로가기
공부/알고리즘

[백준]1065_python파이썬 풀이

by happyeuni 2021. 12. 29.

n = int(input()) #자연수 n 입력받기

cnt = 0
for i in range(1,n+1):#1~n
    s = str(i)  # 각자리의 수 알기 위해 문자열 변환

    if len(s)==1: #한자리 수는 밑의 for문에 포함되지 않아서 따로 처리
        cnt += 1
    else:
        diff = []
        for j in range(len(s)-1): # 각 자리수 차이
            diff.append(int(s[j])-int(s[j+1])) #diff라는 리스트에 저장
        if len(set(diff))==1: #중복이 없는 set으로 만들어 각 자리수 차이가 같다면
            cnt += 1 #한개의 값으로 합쳐질 것임->cnt++
print(cnt)

 

1~입력받은 n까지 for문을 돌리면서

   차례대로 숫자들의 각 자리수가 등차수열을 이루는지 확인

      ->리스트에 각 자리수와 그 다음자리 수의 차이를 저장하여
        중복을 제거하는 set()을 통해 그 차이값이 같은지 확인
           같다면 차이가 같은 등차수열 이므로 개수 세기

 

 

 

 

set 선언 방법

a = {1,2,3,4,5} #key가 없는 딕셔너리
a = [1,2,3,4,5] #리스트 선언 후(리스트가 비어있어도 괜찮음)
a = set(a) #set으로

리스트 요소 추가 : a.append()

set 요소 추가 : a.add()

2019.09.25 - [공부/Python] - python 기초 7 - 리스트, 딕셔너리, set

댓글