[백준] 1065번 - 한수 (파이썬)

2022. 6. 11. 18:45·🎲 알고리즘 공부/백준

📝 문제

> 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 

 

🐯 문제 설명

한수인 수와 아닌 수 예시

 - 각 자리수를 쪼갰을 때 그 리스트가 등차수열이면 함수다! 위에 예시를 참고하면 이해에 도움이 될 것이다.

 

입출력 예시

https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

 

 

🎨 풀이

💡 성공 코드

def hansu(num):
    arr = list(map(int,str(num)))
    d = arr[1] - arr[0]
    for i in range(len(arr)-1,0,-1):
        tmp = arr[i] - arr[i-1]
        if tmp != d :
            return False
    return True

def main():
    n = int(input())
    count = 0

    for num in range(1,n+1):
        if num < 100 :
            count += 1
        else :
            result = hansu(num)
            if result == True:
                count += 1
    print(count)

main()

> (실행 흐름에 따라 순서를 작성했습니다)

 

1. main 함수를 실행한다.

< main >

2. n을 입력받고, count 변수를 만든다.

  - count 변수로 한수의 개수를 셀 예정이다.

3. ------------------- 1부터 n까지 for문을 돌린다! ------------------

4. 만약 수가 100보다 작으면 바로 count += 1을 해준다.

 - 100보다 작은 수는 모두 한수이기 때문이다. 

 - 한자리수는 무궁무진한 미래를 가지고 있는 느낌이라 한수다.

 - 두자리수도 비슷한데, 예시로 설명해보자면 13 = [1,3]은 첫째항이 1이고 공차가 3인 등차수열이다. 그래서 한수가 된다.

5. 수가 100과 같거나 그것보다 크다면 그 값을 넘기면서 hansu 함수를 실행시킨다.

 

< hansu > 

6. 받아온 값을 arr에 쪼개서 담아준다.

7. arr[1] - arr[0]을 통해 수의 차이를 구한 후 d에 넣는다.

 - 공차라 하긴 뭐하고 수의 차이정도...? 등차수열 아닐 수도 있으니까!

8. for문을 이용해서 뒤에 있는 수부터 차례대로 차이를 구한 후 아까 구했던 d와 비교한다.

9. 만약 d와 tmp 값이 같지 않다면 return False를 하며 함수를 탈출한다.

10. return False를 하지 않고 for문을 끝냈다면 등차수열이라는 뜻이다! 그래서 True를 return해준다.

 

<다시 main>

 

11. result에 return된 값을 담아두고, 그 값이 True라면 count를 +1 해준다. (한수 인정 처리)

 --------------------------  for문 끝! -------------------------

 

12. count를 print 해준다~

 

 

​끝~

 

⭐ 느낀점

 

> 어유 어렵다야. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 못풀수도 있을거라 생각했는데 맞혔습니다! 글씨 보니까 너무 좋았다~ 고생했다. 더 고생 많이해야지 파이팅하자!!!!!!!

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 11720번 - 숫자의 합 (파이썬)  (0) 2022.06.13
[백준] 11654번 - 아스키 코드 (파이썬)  (0) 2022.06.12
[백준] 4673번 - 셀프 넘버 (파이썬)  (0) 2022.06.10
[백준] 15596번 - 정수 N개의 합 (파이썬)  (0) 2022.06.09
[백준] 4344번 - 평균은 넘겠지 (파이썬)  (0) 2022.06.08
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 11720번 - 숫자의 합 (파이썬)
  • [백준] 11654번 - 아스키 코드 (파이썬)
  • [백준] 4673번 - 셀프 넘버 (파이썬)
  • [백준] 15596번 - 정수 N개의 합 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    찬양추천
    카카오
    til
    행렬덧셈
    연습문제
    오버워치
    충무로
    오블완
    피보나치수
    프로그래머스
    코민이
    신입일기
    스프링부트
    nodejs
    파이썬
    컨텐더스
    정보처리기사
    백준
    스프링 부트
    코린이
    폰켓몬
    티스토리챌린지
    일기
    정처기
    코드업
    코테
    50문답
    codeup
    6월 목표
    BOJ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 1065번 - 한수 (파이썬)
상단으로

티스토리툴바