-
[백준] 1065번_한수Study/알고리즘 2020. 1. 15. 17:38
문제 링크 : https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
n = int(input()) arr = [0] * (n+1) for i in range(len(arr)): if 1<= i <= 99: arr[i] = 1 elif 100<= i <= 999: hund = i // 100 ten = i % 100 //10 one = i % 100 % 10 if (hund-ten) == (ten-one): arr[i] = 1 print(sum(arr))
처음에 떠오른건 배열로 만든거여서 이렇게 했지만 더 간단하게...
n = int(input()) count = 0 for i in range(1,n+1): if i<=99: count += 1 elif 100<=i<=999: i = str(i) if (int(i[0])-int(i[1])) == (int(i[1])-int(i[2])): count+=1 print(count)
아니면
i = str(i) if (int(i[0])-int(i[1])) == (int(i[1])-int(i[2])): count+=1
이 부분 대신
new_i = list(map(int,str(i))) if (new_i[0]-new_i[1]) == (new_i[1]-new_i[2]):
로 바꿔줘도 된다. list(map)을 통해 자릿수 별로 떼어내어 리스트에 저장해주기 때문이다.
'Study > 알고리즘' 카테고리의 다른 글
[백준] 10809번_알파벳찾기 (0) 2020.01.15 [백준] 11720번_숫자의합 (0) 2020.01.15 [백준] 11654번_아스키코드 (0) 2020.01.15 [백준]2909번_캔디구매 (0) 2020.01.14 [백준]2493번_탑 (0) 2020.01.13