한수가 무엇인가.....솔직히 문돌이라 한수가 먼지 모른다. 심지어 등차수열도 까먹었었다.
그래서 한수를 찾아보니 해당 값의 차가 동일한 경우를 한수라고 한다.
즉 103이라면
1-0 = 0
0-3 = -3
으로 동일한 값이 나오지 않기 때문에 한수가 아니다.
그러나 123인경우
1-2 = -1
2-3 = -1
으로 동일한 -1을 가지기 때문에 한수라고 할 수 있다.
문제는 한자리수와 두자리수는 어떻게 보냐는 건데, 한자리수와 두자리수는 차를 비교할수 없기 때문에 그 자체로 한수로 본다고 한다.
따라서 한자리수와 두자리수는 전부 한수로 보고 나머지부터는 한수인지 차를 구해서 비교하면 되는것이다.
1. 한자리수와 두자리수는 한수로 판별하여 1을 반환
2. 세자리수부터는 각 자리의 차를 구하고 리스트에 담는다.
3. 리스트를 돌면서 값이 다른경우 한수가 아니라고 판별, 전부 같은 경우 한수로 판별하고 1을 반환
4. 한수를 찾아서 count에 값을 담고 전체 한수를 출력
def find_han(n):
tmp = str(n)
# 한자리수, 두자리수 전부 한수
if len(tmp) < 3:
return 1
tmplist = []
for i in range(0,len(tmp)-1):
tmplist.append(int(tmp[i]) - int(tmp[i+1]))
before = tmplist[0]
for i in tmplist:
if before != i:
return 0
return 1
val = int(input())
count = 0
for i in range(1,val+1):
count+=find_han(i)
print(count)
'알고리즘' 카테고리의 다른 글
백준 2775 풀이 (0) | 2021.02.07 |
---|---|
백준 1193 풀이 (0) | 2021.02.07 |
#2 알고리즘 공부 2/6 리뷰 (0) | 2021.02.06 |
백준 1157 풀이 (max, count, 집합자료형) (0) | 2021.02.06 |
#1 알고리즘 공부 시작! (0) | 2021.02.04 |