새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • AI트랙
  • 코린이
  • Github
  • machine learning
  • docker
  • 스파르타코딩클럽
  • Python
  • TodayILearned
  • Selenium 4
  • 자기주도학습
  • 코딩
  • 코딩프로젝트
  • portfolio
  • 프로그래머스
  • til
  • 내일배움단
  • 내일배움캠프
  • 내일배움카드
  • 국비지원
  • 개발일지

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[백준_1065] 한수

2022. 5. 31. 23:18

문제 보기: https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

문제

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

 

입력

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

출력

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

 

풀이 과정

1. 한수의 의미를 먼저 알아봐야 한다. 문제에서 정수 X의 '각 자리'가 등차수열을 이룬다면이라고 되어있으므로 입력값의 각 자릿수를 배열 형식으로 비교해야 한다는 것을 생각해야 한다.

2. 그리고 한자리일 때 두 자리일 때 그리고 4자리일 때까지의 경우만 생각하면 된다. ( 제약 조건이 1000보다 작거나 같으니 있으므로)

3. 결과적으로 3자리 수일 때 첫 번째와 두 번째의 차와 두 번째와 세 번째의 차가 같지 않은 경우를 찾고 이 값을 count 하여 총개수에서 빼주면 원하는 값을 구할 수 있다.

4. 유일한 4 자릿수인 1000일 경우에도 한수가 아니므로 빼도록 한다. 

 

코드

import sys

num = int(sys.stdin.readline())
count = 0

for i in range(1, num + 1):
    if len(str(i)) == 3 and (int(str(i)[2]) - int(str(i)[1])) != (int(str(i)[1]) - int(str(i)[0])):
        count += 1
    elif len(str(i)) == 4:
        count += 1

print(num - count)
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준_2606] 바이러스  (0) 2022.06.02
[백준_1152] 단어의 개수  (0) 2022.06.01
[백준_8958] OX퀴즈  (0) 2022.05.30
[백준_10871] x보다 작은 수  (0) 2022.05.29
[백준_14681] 사분면 고르기  (0) 2022.05.28
    'Algorithm' 카테고리의 다른 글
    • [백준_2606] 바이러스
    • [백준_1152] 단어의 개수
    • [백준_8958] OX퀴즈
    • [백준_10871] x보다 작은 수
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바