반응형
https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
Hint
두 자리 수는 항상 한수이며
세 자리 수부터 일정한 차이가 있는지 확인한다
Solution
List = []
def hans(a):
if a < 100:
List.append(a)
else:
hans_list = []
for i in range(len(str(a))-1):
hans_list.append(int(str(a)[i+1]) - int(str(a)[i]))
hans_list.sort()
if hans_list[0] == hans_list[len(hans_list)-1]:
List.append(a)
else:
return 0
N = int(input())
for i in range(N+1):
hans(i)
print(len(List)-1)
위는 실제로 정답인 코드입니다
hans함수는
List라는 list에 해당 수가 한수이면 삽입합니다.
아래는 코드 설명입니다
if a < 100:
List.append(a)
십의 자리, 일의 자리 수 모두는
한수입니다
최소 규칙을 파악하려면 세 개의 수는 주어져야 하는데
두 개 이하의 수가 주어지면 어떤 규칙이든
짜맞출 수 있으므로 모두 List에 수를 넣어줍니다
else:
hans_list = []
for i in range(len(str(a))-1):
hans_list.append(int(str(a)[i+1]) - int(str(a)[i]))
hans_list.sort()
if hans_list[0] == hans_list[len(hans_list)-1]:
List.append(a)
else:
return 0
[line 5]
여기서 else는 세 자리 이상의 수를 가져옵니다.
hans_list는 해당 수의 각 숫자의 차를 기록하는 리스트입니다.
여기서 int 자료형은 각 자리에 있는 수를 따로 가져오지 못하므로
str 자료형으로 수를 가져온 다음 계산을 위해 int로 변경합니다
위 코드블럭의 line 4를 보면
hans_list에 자리에 있는 수의 차이를 기록합니다
그 후 sort를 합니다.
여기서 sort를 하는 이유는 그 다음
hans_list에 있는 값들의 차이를 확인하기 위함인데
line 6 if 문에서 이를 확인합니다.
반응형
'백준(BOJ)' 카테고리의 다른 글
[백준] 2579번 문제 풀이 : 파이썬(python) 코드 설명 (0) | 2021.02.17 |
---|---|
[백준] 3053번 문제 풀이 : 파이썬(python) 코드 설명 (0) | 2021.02.09 |
[백준] 9012번 문제 풀이 : 파이썬(python) 코드 설명 (0) | 2021.02.04 |
[백준] 1003번 문제 풀이: 파이썬(python) 코드 설명 (0) | 2021.02.03 |
[백준] 1002번 터렛 문제 풀이 : 파이썬(python) 코드 설명 (0) | 2021.01.27 |