푸르미르

[python]1065.한수 본문

Baekjoon Online Judge

[python]1065.한수

((•_•)) 2021. 1. 4. 01:43

 입력된 수 이하의 수 중 한수의 개수를 출력해내는 프로그램에 대한 문제이다. 

알아둬야 할 것이 1부터 9까지의 수들은 한자리 수들은 공차라는 것이 없기 때문에 한수로 친다.

또 10부터 99까지 숫자들도 공차가 한개만 존재하기 때문에 한수로 친다.

한수는 111같이 자릿수가 다 같은 경우에도 한수로 친다.

이 개념을 알고 가면 무조건 1부터 100사이의 한수는 총 99개이다. 또한 주어진 수가 100보다 작은 수일 경우 그 주어진 수대로 한수의 개수로 출력하면 된다. 그러므로 우린 입력되는 수가 세자리 숫자일 경우만 고려하면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
num=int(input()) 
han=99 #한수 개수를 보관
if num<=100#주어진 수가 100이하일 때
    if num != 100#100이 아닐 때
        print(num)
    else#100일 때
        print(num-1#입력값이 99개일 때와 한수 개수 동일 
else#입력값이 101이상 1000이하일 때
    if num !=1000#101이상 999이하일 때
        for i in range(100, num+1):
            a=int(i/100#첫 번째 자릿수
            b=int(i%100/10#두 번째 자릿수
            c=int(i%100%10#세 번째 자릿수
            if (a-b)==(b-c) or a==b==c:
                han+=1
        print(han)
    else#num==1000
        print('144'#num이 999일때와 한수 개수 동일
cs

주어진 수가 101이상일 때 100이하의 한수는 99개로 알 수 있기 때문에 99개 부터 한수의 개수가 증가한다.

첫 번째자릿수와 두 번째 자릿수의 공차와 두 번째자릿수와 세 번째 자릿수의 공차가 같을 경우와 각자리의 숫자들이 같을 경우를 따져서 한수의 개수를 더해주면된다.

마지막으로 주어진 수가 1000일 경우 1000이 한수가 아니기 때문에 입력값이 999일 경우와 한수의 개수가 동일하여 이것을 이용하여 코딩하면 되지만, 문제 예시에 입력값이 999일 경우 한수의 개수가 144로 나와있기 때문에 그냥 간단히 했다.

 

www.acmicpc.net/problem/1065

'Baekjoon Online Judge' 카테고리의 다른 글

[python]2941.크로아티아 알파벳  (0) 2021.01.06
[python]1157.단어 공부  (0) 2021.01.04
[python]4673.셀프넘버  (0) 2021.01.04
[python]15596.정수 N개의 합  (0) 2021.01.02
[python]4344.평균은 넘겠지  (0) 2021.01.02