Algorithm Study/Python

[백준 파이썬] # 1065 한수

728x90
반응형

Silver IV

# 1065 한수

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

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

풀이

N = int(input())
li = [False] * 1000

def d(n):
    text = str(n)
    if len(text) <= 2:
        li[n] = 1
    elif len(text) == 3 and (int(text[0])-int(text[1]) == int(text[1])-int(text[2])):
        li[n] = 1
    elif len(text) == 4 and (int(text[0])-int(text[1])==int(text[1])-int(text[2])) and (int(text[1])-int(text[2])==int(text[2])-int(text[3])):
        li[n] = 1

for i in range(1, N+1):
    d(i)

print(sum(li))

 

후기

  • 셀프넘버와 같은 유형의 문제이다.
    저장공간 li를 만들고 해당 인덱스의 값이 등차수열이면 1을, 아니면 False로 구분했다. 
    한 자리 수, 두 자리 수는 문제없이 해당 문제의 등차수열로 분류되는 반면 세 자리 수, 네 자리 수는 각 자리 수 간 관계를 확인해야 한다.

  • if절에서 a == b == c 도 사용할 수 있나보다
    a == b and b == c 로만 사용해야 하는 줄 알았다.

 


 

파이썬에서 a == b == c의 사용

일종의 자동 완성 프로그램에 의해서 결과값을 구할 수는 있다. 하지만 일부의 경우 부작동/오작동이 일어나기 때문에 'a==b and b==c and c==a' 와 같이 and로 구분지어 사용하는 것이 바람직하다

 

https://stackoverflow.com/questions/6304509/are-there-sideeffects-in-python-using-if-a-b-c-pass

 

Are there sideeffects in python using `if a == b == c: pass;`?

if a == b == c: # do something Let's assume a, b, c are string variables. Are there any possible side effects if I use the snippet above to execute # do something if and only if all three stri...

stackoverflow.com