반응형
1065의 내 풀이는 이렇다
def Han(a):
a = str(a)
if len(a) ==1:
return 1
b = []
for i in range(len(a)-1):
b.append(int(a[i+1])-int(a[i]))
b = set(b)
if len(b) ==1:
return 1
else:
return 0
n = 0
i = int(input())
for l in range(1,i+1):
n += Han(l)
print(n)
내가 생각한 방법은, 등차수열로 숫자가 이루어져있다면 각 자리수 차가 똑같은 것을 이용해
각 자리수 차 종류가 하나인 것을 한수로 정의했다.
그래서 자릿수 접근에 이용하게 문자열로 숫자를 변환한후에 b라는 리스트를 만들어 각 자리수차 종류를 b에다가 집어넣었다.
한수라면 각 자리수 차의 종류는 한가지로 중복으로 b에 쌓여있을 것이다. 그래서 set()로 변환해 중복을 없애주어
b의 값을 1개로 만들었다.
그렇게 만들어진 값이 1개라면 1을 리턴하여 n 갯수에 반영했다.
부족한 풀이할 때 겪은 실수는 str로 변환했을 때 문자열 각 자리는 int라고 착각을 해버렸다. 리스트처럼,
리스트 전체의 타입은 리스트지만 각 자리는 int라는 걸 str도 그렇다고 무의식적으로 생각해서 a[i+1]-a[i] 그냥 이렇게 넣었다가 해멨다.
반응형
'알고리즘 문제들 으악 > 백준' 카테고리의 다른 글
[python]1157,5622번 무지성의 정점 (0) | 2022.03.26 |
---|---|
[python]10809번, continue break 그리고 ascii (0) | 2022.03.25 |
[python]4673번 문제, 고수님들은 멋있다. (0) | 2022.03.23 |
[python]4344번, 무조건 소수점 n자리 나오게 하기 (0) | 2022.03.21 |
[python]8958번 내 풀이와 replace를 이용한 다른 풀이 (0) | 2022.03.20 |