개발자의시작

[백준1065번][백준][baekjoon][1065번][부루트포스][BF][BruteForce][한수][Python][파이썬] 본문

알고리즘(Algorithm)/백준(baekjoon)문제

[백준1065번][백준][baekjoon][1065번][부루트포스][BF][BruteForce][한수][Python][파이썬]

LNLP 2020. 3. 13. 19:06

문제링크

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

 

1065번: 한수

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

www.acmicpc.net

 

문제

 

풀이

한수라는 개념이 생소하지만 브루트 포스(Brute Force) 즉, 주먹구구식으로 해결하면 쉽게 해결할 수 있는 문제입니다. 문제의 설명대로 한수는 정수 X의 각 자리가 등차수열을 이루는 경우를 의미합니다. 여기서 주의하실 것은 입력에 사용되는 N은 1000보다 작거나 같은 정수입니다. 즉, 1000은 한수가 아니며 1000보다 작은 999까지만 판단을 하면 됩니다. 또한 한 자릿수 1~9와 두 자리수 10~99까지는 모두 한수입니다. 세 자리수 100부터 999중에서 한수가 몇 개인지를 판별하면 되는데 "100 자릿수와 10 자릿수의 차" 그리고 "10 자릿수와 1 자릿수차"가 같다면 한수에 해당합니다. 소스코드는 아래와 같습니다.

 

소스코드

#Python

 

1
2
3
4
5
6
7
8
9
10
11
12
13
testcase=int(input())
hansu=0
for i in range(1,testcase+1):
    if i<100:
        hansu+=1
    else:
        n100=int(i/100)
        n10=int((i%100)/10)
        n1=int(i%10)
        if n100-n10== n10-n1:
            hansu+=1
 
print(hansu)
 

 

오류 또는 더 좋은 풀이 방법이 있다면 댓글로 남겨주세요.

 

 

 

Comments