본문 바로가기

알고리즘/백준알고리즘

[백준 알고리즘/Python3] 1065 한수

문제 

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

 

 

 

문제이해

n이 주어졌을때 그 수가 한수인지 아닌지를 확인해야 한다.

 

허나 1의자리로 되어진 1,2,3,4....9는 한수라고 할 수 있다.

 

등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다

 

01, 02, 03... 09라고 하면 두 개의 수의 차이가 일정하기 때문이다.

 

마찬가지로 10의자리 형태를 보면

 

11, 12, 13, 14.... 99까지 두 개의 수 차이가 1개로 일정하기 때문에 한수이다.

 

즉, 1~ 99까지는 모두 한수이다.

 

 

그렇다면 100의 자리가 나오는거 부터 봐야한다.

 

예제에 210 은 105개가 한수라고 나타난다.

 

105 - 99 하면 총 6개의 한수가 나온다.

 

1 1 1
1 2 3
1 3 5
1 4 7
1 5 9
2 1 0

 

으로 6개의 한수가 나오는대 100의 자리에서 공차가 0,1,2,3,4가 된다.

 

즉 100의자리 - 10의자리 와 

10의자리 - 1의자리가 같다면(공차가 같다면)

 

한수라고 판별이 가능하다.

 

 

코드

input_num = int(input())

count = 0
for i in range(1,input_num+1):
    
    if(i > 100):
        a = (i//100)
        b = ((i%100)//10)
        c = ((i%10)//1)
        #print(a, b,c, c-b, b-a)
        if((a-b) == (b-c)):
            count +=1
    elif(i < 100):
        count +=1
print(count)

 

 

참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=occidere&logNo=220790000403 

 

[백준] 1065 - 한수

문제 링크 : https://www.acmicpc.net/problem/1065이 문제는 1<= N <=1000인 N값이 주어졌을때, 1...

blog.naver.com

 

728x90