Python/백준 알고리즘

[BaekJoon/Python] : 백준 1065번 - 한수

우준세 2021. 1. 5. 21:39
728x90
반응형

 

이번 포스팅은 www.acmicpc.net/problem/1065에서 푼 것을 토대로 작성했습니다.

함수의 마지막 문제인 한수입니다.

 

문제.

처음에는 한수라는 개념을 이해를 못해서 문제를 어떻게 풀어야 할지 몰랐습니다

이 문제에서 한수란 

예를 들어 210은 2-1 == 1-0이라 한수입니다

또 110은 1-1 != 1-0이라 한수가 아닙니다.

자릿수의 차가 같을 때, 즉 등차수열 일 때 한수이며 이것을 출력하는 프로그램을 만들어야 합니다.

 


코딩 1.

n = int(input())

a=0
b=0
c=0
han = 99

if n < 100:
    han = n
else :
    for i in range(100, n+1):
        a = i//100
        b = i%100//10
        c = i%10
       
        if (a-b)==(b-c):
            han += 1

print(han)

첫 번째 코딩 방법은 n <100일 때는 han, 한수를 n으로 두었고 

100 이상일 때는 for문을 만들어 100부터 n+1까지 반복되도록 하여

각각 자릿수를 계산해서 비교하여 han += 1을 하도록 만들었습니다. 

 

코딩 2.

n = int(input())
han = 99

if n < 100:
    han = n
    
else:
    for i in range(100, n+1):
        a = list(map(int, str(i)))
        if a[0]-a[1] == a[1]-a[2]:
            han += 1

print(han)

두 번째 코딩 방법은

100 이하는 코딩 1의 방법과 동일하지만 100 이상의 수는 list를 이용하여 

각 자릿수를 str로 분리하고 그것을 비교해서 han을 하나씩 올리도록 하였습니다.

 

 

 

처음께 list를 사용한 코드이며 4ms 차이 정도 나는 것을 볼 수 있습니다.

 

 

다음 포스팅으로 찾아오겠습니다 :0

 

 

728x90
반응형