몽-구
몽구의 우당탕탕 개발 공부
몽-구
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • PS (38)
      • 백준 (24)
      • 프로그래머스 (14)
    • Dev (58)
      • Kotlin (0)
      • Java (4)
      • Spring, SpringBoot (1)
      • C (8)
      • Python (10)
      • Dart (1)
      • 알고리즘 (7)
      • 자료구조 (3)
      • Git (1)
      • Linux (2)
      • VS Code (1)
      • 환경 설정 (8)
      • Conference (1)
      • 42Seoul (3)
      • Node.js (1)
      • ShellScript (1)
      • IntelliJ (0)
      • MacOS (2)
      • 기타 (3)
    • CS (1)
      • 데이터베이스 (1)
    • DS (4)
      • Coursera (4)
    • 리뷰 (1)
      • 제품 리뷰 (1)
    • 일상 (3)
      • 자동화 (1)
      • 목표 및 계획 (2)
      • 회고 (0)
    • 삶에 대한 태도 (1)
      • 유튜브를 보며 (1)

블로그 메뉴

  • GitHub

인기 글

반응형

태그

  • Algorithm
  • c언어
  • 리눅스
  • BOJ
  • 백준
  • 백준알고리즘
  • 파이썬
  • Linux
  • 백준온라인저지
  • 알고리즘
  • 프로그래머스
  • 정렬
  • 코딩테스트
  • Python
  • sort

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
몽-구

몽구의 우당탕탕 개발 공부

[백준 알고리즘][파이썬/Python] 1065번: 한수
PS/백준

[백준 알고리즘][파이썬/Python] 1065번: 한수

2020. 3. 30. 12:30
반응형

문제

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

 

입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

 

출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

 

입출력 예

 

제출 코드

n = int(input())
if n <= 99:
    print(n)

else:
    cnt = 99
    for num in range(100, n+1):
        num = str(num)
        gap = int(num[1]) - int(num[0])
        for j in range(1, len(num)-1):
            if gap != int(num[j+1]) - int(num[j]):
                break
        else:
            cnt += 1
    print(cnt)            

(1) line 2, 3

문제에서 언급된 한수의 조건에 따르면 100 미만의 수는 모두 한수이다. 그렇기 때문에 입력값이 100 미만의 수로 주어진다면 바로 print(n)을 하는 식으로 효율을 증대시킨다.

 

(2) line 6

위에서 언급한 것과 마찬가지로 99 이하의 수는 모두 한수이므로 한수를 카운팅하는 변수 cnt를 99로 선언해준다.

 

(3) line 7 ~ 9

100부터 입력값인 n까지 1씩 증가시키며 해당 숫자가 한수인지 확인해본다. 한수의 조건인 각 자릿수 간의 일정한 차이를 확인해야 하는데, int형으로는 확인하기가 까다롭기 때문에 반복문을 돌릴 때마다 해당 숫자를 str형으로 변환시킨 후 진행한다. 우선은 첫 번째 숫자와 두 번째 숫자의 차이를 변수 gap에 할당해준다.

 

(4) line 10 ~ line 15

숫자의 각 자릿수가 일정한 차이를 가지는지 확인해보고 그렇다면 cnt를 +1, 그렇지 않다면 다음 수로 넘어간다. 이후 최종적으로 cnt 값을 출력한다.

 

 

 

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

반응형
저작자표시 (새창열림)

'PS > 백준' 카테고리의 다른 글

[백준 알고리즘][파이썬/Python] 1712번: 손익분기점  (0) 2020.04.01
[백준 알고리즘][파이썬/Python] 2941번: 크로아티아 알파벳  (0) 2020.03.31
[백준 알고리즘][파이썬/Python] 4344번: 평균은 넘겠지  (0) 2020.03.29
[백준 알고리즘][파이썬/Python] 1157번: 단어 공부  (0) 2020.03.28
[백준 알고리즘][파이썬/Python] 1152번: 단어의 개수  (0) 2020.03.27
    'PS/백준' 카테고리의 다른 글
    • [백준 알고리즘][파이썬/Python] 1712번: 손익분기점
    • [백준 알고리즘][파이썬/Python] 2941번: 크로아티아 알파벳
    • [백준 알고리즘][파이썬/Python] 4344번: 평균은 넘겠지
    • [백준 알고리즘][파이썬/Python] 1157번: 단어 공부
    몽-구
    몽-구
    소망보단 목표를, 생각보단 실천을

    티스토리툴바