출처 :
https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
풀이 :
다음 문항은 실버4인데 실버 4 가볍게 해결했다. 브론즈 2가 더 어려운듯...
1. 일단 문제를 뜯어보면
한수 : 각자리의 수가 등차수열을 만족하는 수 인데
가장 궁금했던건. 99 같은 등차가 0인 case와 4 같은 한자리수인데 예제에서 보면 이를 모두 인정했다. 따라서 100보다 작다면 그대로 n을 출력해주면 된다.
2. def 설정을 해준다음 개수를 카운팅 하므로 빈집 clt 를 만들어준다.
그 다음 1번에서 설명했듯이 n이 100보다 작다면 그냥 n값이 한수의 개수 이므로 clt = n 을 해줬다.
!!!좀 중요한게 그냥 print(clt), clt 이렇게 표현했는데 def 에서 return 을 쓰지 않으면 정답으로 인정이 안된다. return을 잘 안썼는데 쓰는 습관을들여야겠다.
3. 그리고 이제는 100 이상일 때를 보자.
for i in range(100, n+1) => 100 이상 n 이하 까지를 검토한다는 것을 뜻한다.
그 다음 b는 list형태로 str(i)를 저장하고
3자리 수이므로 b[1] - b[0] == b[2] - b[1] 을 만족하면 한수라고 이해하고 개수를 추가해준다.
그런다음 내 풀이의 경우에는 100부터 카운팅을 시작했으므로 그전에 1~99의 경우를 더해줘야한다.
따라서 return(clt+99) 로 결과를 내주었다.
4. 여기까지만 하고 제출하니 바로 오답이 나왔다. 왜 그러냐 하니까 이것도 입력이 있으므로 입력을 넣어주자.
5. solve(a) 하면 깔끔하게 나온다.
'코딩테스트 > 기초' 카테고리의 다른 글
백준 11720 숫자의 합 - python (0) | 2022.01.02 |
---|---|
백준 11654 아스키코드 (0) | 2022.01.02 |
백준 4673 셀프 넘버 - python (0) | 2022.01.01 |
백준 15596 정수 N개의 합 (0) | 2022.01.01 |
백준 4344 평균은 넘겠지 - python (0) | 2022.01.01 |