백준 [1065] - 한수
문제
작성한 코드
import sys
input = sys.stdin.readline
count = 0
def hansu(N):
if N < 100:
count = N
else:
count = 99
for i in range(100, N+1):
hansu = list(map(int, str(i)))
if hansu[0]-hansu[1] == hansu[1]-hansu[2]:
count += 1
return count
N = int(input())
print(hansu(N))
- sys.stdin.readline을 input에 할당하여 사용하였다.
- 한수의 개수를 나타내는 변수 count를 0으로 초기화시켰다.
- input()을 문자로 입력받고, int형으로 형변환하여 N에 저장한다.
- N을 함수 hansu()의 매개변수로 사용하여, 함수 hansu()의 return 값을 print()로 출력한다.
- def hansu(N): N이 100 미만일 경우와 아닌 경우로 조건을 나누었다.
- N이 100 미만일 경우
: 2자리 수의 경우 (1~99) 모두 등차수열에 해당되기 떄문에, 한수의 개수인 count는 N(개)이다.
- N이 100 이상일 경우
: 1~99일때 count의 최대값은 99이기 떄문에, 100부터는 일단 count는 99부터 시작해야 한다.
: for i in range(100, N+1): 100부터 N까지 i에 넣어 차례대로 반복문 for문을 돌려 list인 hansu에 각 자리에 해당하는 숫자들을 인덱스 별로 저장한다.
: hansu[0] = 백의 자리 / hansu[1] = 십의 자리 / hansu[2] = 일의 자리
: hansu[0]-hansu[1] 의 값과 hansu[1]-hansu[2]의 값이 같다면 한수이기 떄문에, count를 1씩 증가시켜준다.
- 함수 hansu는 count의 값을 return 해주고, print()로 출력한다.
'코딩테스트 > 백준' 카테고리의 다른 글
백준 [11720] - 숫자의 합 (0) | 2022.08.11 |
---|---|
백준 [11654] - 아스키 코드 (0) | 2022.08.11 |
백준 [4673] - 셀프 넘버 (0) | 2022.08.10 |
백준 [15596] - 정수 N개의 합 (0) | 2022.08.10 |
백준 [4344] - 평균은 넘겠지 (0) | 2022.08.09 |
댓글