728x90
# 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
# 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
def ishansu(str_number):
# 한, 두자리 수인 경우 무조건 등차수열
if len(str_number)== 1 or len(str_number)==2:
return True
# 세자리 수인 경우
tmp = []
for ch in str_number:
tmp.append(int(ch))
if (tmp[0]-tmp[1]) == (tmp[1]-tmp[2]):# 각 자리가 등차수열?
return True
else:
return False
N = int(input())
result = 0
for i in range(1, N+1):
if ishansu(str(i)):
result += 1
print(result)
함수를 지정하여 한수인지 아닌지 체크했다.
함수를 보면 입력값을 string으로 받았는데, string은 각 자리수를 쉽게 나눌수 있기때문이다
그리고 한, 두 자리수의 숫자는 등차인지 비교를 못하기 때문에 True로 반환을 했다.(예제. 입력 1일때 출력 1 => True)
세자리 수인 경우에만 등차인지 판단을 하면 되는데 각 자리수를 int로 변환해서 tmp에 추가를 했고 각 자리수들의 차이를 비교했다.
결과는 68ms
# 세자리 수인 경우
if (int(str_number[0])-int(str_number[1])) == (int(str_number[1])-int(str_number[2])):# 각 자리가 등차수열?
return True
else:
return False
비교하는 코드는 이렇게도 바꿀수 있는데 이 경우에는 시간이 조금더 오래걸렸다. 76ms
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 4673 셀프 넘버 (0) | 2021.01.30 |
---|---|
[백준] 1110 더하기 사이클 (0) | 2021.01.30 |
[백준] 1316. 그룹 단어 체커 (0) | 2021.01.29 |
[프로그래머스] LEVEL2 짝지어 제거하기, python3, 2017 팁스타운 (0) | 2021.01.28 |
[백준] 1003 피보나치 함수 (0) | 2021.01.28 |