BOJ-Algorithm
백준 1065번 - 한수
bellhundred
2022. 1. 9. 01:10
https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
n = int(input())
arr = [i for i in range(1, n+1)]
count = 0
for num in arr:
text = str(num)
flag = True
if len(text)<2:
flag = True
else:
diff = int(text[0])-int(text[1])
for j in range(1, len(text)):
if diff!=int(text[j-1])-int(text[j]):
flag = False
count += flag
print(count)
arr에 1부터 n을 포함한 범위까지의 수 리스트를 만들어 주고
각 숫자별로 숫자를 우선 텍스트화 시킨 뒤, 이 수가 한수인지 아닌지를 구별해주는 flag를 생성한다.
일단 숫자가 한 자리면 무조건 한수이므로, 길이가 2보다 작은 텍스화된 수는 한수 처리한다.
그 외에는 우선 맨 앞자리와 그 다음자리의 수의 차를 diff로 설정한 뒤에, 해당 diff와 숫자의 차이가 같지 않다면 등차수열이 아니므로 한수가 아니게 된다. 이 경우 flag를 false로 변경한다.
count에 True를 더하면 +1이 되고, false를 더하면 +0이 되어 반복문이 완료되었을 때 True의 수를 파악할 수 있다.
이후 count를 출력한다.