[1065] 한수

HeeSeong·2021년 6월 8일
0

백준

목록 보기
19/79
post-thumbnail

🔗 문제 링크

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


❔ 문제 설명


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


⚠️ 제한사항


  • 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

  • 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.



💡 풀이 (언어 : Python)


쉽게 직관적으로 풀었다. 등차수열인지 아닌지 여부를 앞, 뒤항의 차이가 일정한지로 가리고, flag라는 변수에 저장해서 이걸로 count여부를 판별했다.

n = input()
lis = [int(x) for x in n]
count = 0

for i in range(1, int(n)+1):
  # 공차
  gap = 0
  # 등차수열인지 여부
  flag = True
  # 숫자를 각자리 숫자 하나씩 쪼갠 리스트
  numList = [int(x) for x in str(i)]

  for j in range(1, len(numList)):
    # 첫 한쌍으로 공차를 정함
    if j == 1:
      gap = numList[j-1] - numList[j]
    # 중간에 하나라도 등차수열 아니면 반복 중단
    elif numList[j-1] - numList[j] != gap:
      flag = False
      break
  # 등차수열이면 카운트
  if flag:
    count += 1

print(count)
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글