문제
https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
나의 풀이
inputNum=int(input())
def isSequence(n):
if n<100:
return True
else:
arr=list(str(n))
if int(arr[2])-int(arr[1])==int(arr[1])-int(arr[0]):
return True
return False
count=0
for i in range(1,inputNum+1):
if isSequence(i):
count+=1
print(count)
다른 사람의 풀이
def yes(n):
if n<100:
return True
s = str(n)
return int(s[1])*2 == int(s[0])+int(s[2])
n = int(input())
print(sum([yes(i) for i in range(1,n+1)]))
등차수열의 성질을 이용하여 n[1]*2=n[0]+n[2] 라는 식으로 간단하게 사용하였다.
또한 나처럼 if를 이용하지 않고 return 값에 ==을 사용하여 맞다면 True, 틀리다면 False가 반환되게 코드를 작성하였다.
또한 print를 할 때 나처럼 잡다한 for문을 사용하지 않고 식인 yes(i)를 사용하여 어차피 참이면 1이 반환될 것이므로 나처럼 count를 사용해 1씩 더해주지 않아도 되었다. 그리고 간단하게 sum함수를 이용해 코드를 작성하였다.
배울 것이 많은 코드이므로 한 번 더 확인해보는 것을 추천한다.
'알고리즘 공부' 카테고리의 다른 글
백준 1316번 (미해결) (0) | 2022.12.08 |
---|---|
백준 2941번 (0) | 2022.12.08 |
백준 4673번, if문 not in (미해결) (0) | 2022.12.06 |
백준 10250번, divmod() (0) | 2022.12.03 |
백준 1712번 (0) | 2022.11.30 |
댓글