코딩테스트/기초

백준 1065 한수 - Python

math_tbro 2022. 1. 1. 20:56

출처 :

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