백준 1065번 한수 구하기 문제를 파이썬으로 풀어보자
가장 처음 아무것도 검색안하고 타이핑만 친 코드
import sys
# X가 한수인지 체크하는 함수
def is_hansu(a):
a_list = list(map(int, str(a)))
for i in a_list:
if a_list[i+1]-a_list[i] == a_list[i+2]-a_list[i+1]:
continue
return 1
n = int(sys.stdin.readline())
count = 0
for j in range(n):
if is_hansu(j) == 1:
count += 1
내가 놓친 부분
1. 입력한 숫자가 1자리나 2자리수일 때는 무조건 등차수열 > 입력값에 주의하자
2. 어차피 등차수열에서 "차"는 항상 같기 때문에 먼저 선언하고 비교하면 쉬움
3. for문 안에 if문을 쓸 때는 if문에서 같은 걸 찾았을 때 멈출 건지, 다른 걸 찾았을 때 멈출건지 먼저 생각해야 함
4. for문을 돌릴 때는 n번째인지, n+1, n-1 번째인지 정확히 마지막 값까지 고려해야 함 (당연한데 ㅠ..)
최종 코드
import sys
def is_hansu(a):
a_list = list(map(int, str(a)))
if len(a_list) <= 2:
return True
diff = a_list[1] - a_list[0]
for i in range(1, len(a_list) - 1):
if a_list[i+1]-a_list[i] != diff:
return False
return True
n = int(sys.stdin.readline())
count = 0
for j in range(1, n+1):
if is_hansu(j):
count += 1
print(count)
'개발 공부 > 알고리즘' 카테고리의 다른 글
최소 신장 트리 (MST) - 크루스칼/프림 알고리즘 (ft.백준 1197) (5) | 2025.03.31 |
---|---|
[Python] 백준 9935 문자열 폭발 문제 (스택, 문자열 메서드 join) (0) | 2025.03.27 |
[Python] 백준 10971 외판원순회2 - 완전탐색, DFS, 시간복잡도 개선 (0) | 2025.03.19 |
시간복잡도 / 공간복잡도 / 빅오표기법(Big-O) (0) | 2025.03.15 |
[Python] 백준 9020번 골드바흐의 추측 (0) | 2025.03.15 |