Notice
Recent Posts
Recent Comments
Link
Love Every Moment
〔백준/파이썬〕1065번 한수 본문
반응형
출처
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하라.
예제
# 입력
110
# 출력
99
풀이 - (1)
import sys
num = int(input())
# 1~99 까지는 전부 한수이므로 받은 숫자 그대로 출력
if num <= 99 :
print(num)
sys.exit()
# 100 이상의 숫자가 입력된 경우 등차수열 여부 확인
cnt = num
for i in range(100, num + 1) :
string = str(i)
diff_first = int(string[1]) - int(string[0])
for j in range(1, len(string) - 1) :
diff_now = int(string[j + 1]) - int(string[j])
if diff_now != diff_first :
cnt -= 1
break
print(cnt)
- 어차피 문제에서 1,000 보다 작거나 같은 자연수 N이 주어진다고 했기 때문에 굳이 이렇게 안 하고 아래 풀이처럼 첫번째와 두번째 차이만 비교해도 상관 없다
- 100 미만의 숫자는 전부 한수이므로 100 미만의 숫자가 입력되면 그대로 출력 후 종료하게 했다
풀이 - (2)
num = int(input())
# 한수의 개수
cnt = 0
for i in range(1, num + 1) :
# 100 미만의 수는 전부 한수
if i < 100 :
cnt += 1
else :
num_list = list(map(int, str(i)))
if num_list[0] - num_list[1] == num_list[1] - num_list[2] :
cnt += 1
print(cnt)
- 1~99 사이의 수라면 한수의 개수를 +1 증가
- 100 이상의 수라면 (백의 자리수 - 십의 자리수) 와 (십의 자리수 - 일의 자리수) 가 같은지 확인하여 한수의 개수 증가
반응형
'PROGRAMMING::LANGUAGE > Python' 카테고리의 다른 글
〔모두를 위한 파이썬〕딕셔너리, 데이터 빈도수 측정하기 (0) | 2022.06.24 |
---|---|
〔모두를 위한 파이썬〕리스트, split() 으로 원하는 부분 추출하기, 가디언 패턴 (0) | 2022.06.23 |
〔백준/파이썬〕4673번 셀프 넘버 (0) | 2022.06.23 |
〔모두를 위한 파이썬〕문자열, 슬라이싱, 라이브러리 함수(find, strip, replace) (0) | 2022.06.23 |
〔모두를 위한 파이썬〕반복문, while 루프, for 루프 (0) | 2022.06.23 |
Comments