본문 바로가기
백준

[백준] 1065번 : 한수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 1.
728x90
반응형

 

 

1065번: 한수

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. 정수를 하나 입력받는다. N = int(input())
  2. 한수의 개수를 저장해 줄 변수를 생성하고 초기화해 준다. count = 0
  3. 1부터 입력받은 숫자까지 수 중 한수를 찾아야 하므로 반복문을 사용한다. for i in range(1, (N + 1))
  4. 각 자릿수를 저장할 리스트를 생성한다. li1 = list()
  5. 연속된 두 수의 차이를 저장할 리스트를 생성한다. li2 = list()
  6. 리스트는 매 수마다 새로 생성해줘야 하므로 반복문 안에서 생성한다.
  7. 두 자릿수까지는 무조건 한수이다. if (i < 100): count += 1
  8. 만약 세 자릿수이면 elif (i < 1000)
  9. 각 자릿수를 리스트에 저장한다. li1.append(i // 100)  li1.append((i % 100) // 10)  li1.append(i % 10)
  10. 세 자릿수이므로 연속된 두 수의 차이는 2개가 존재할 것이다. for j in range(2)
  11. 각각 두 수의 차이를 계산하여 리스트에 저장한다. li2.append(li1[j] = li1[j + 1])
  12. 다 저장한 뒤, 만약 두 수의 차이 값이 동일하면 한수이다. if (li2[0] == li2[1]): count += 1
  13. 총 한수의 개수를 출력한다. print(count)
반응형

3. 소스코드

N = int(input())
count = 0

for i in range(1, (N + 1)):
    li1 = list()
    li2 = list()

    if(i < 100):
        count += 1
        
    elif(i < 1000):
        li1.append(i // 100)
        li1.append((i % 100) // 10)
        li1.append(i % 10)
        
        for j in range(2):
               li2.append(li1[j] - li1[j + 1])
        
        if(li2[0] == li2[1]):
            count += 1
    
print(count)
728x90
반응형