Blue___
코딩배우는 학생🌎
Blue___
전체 방문자
오늘
어제
  • 코딩배우는 학생🧀 (242)
    • Algorithms (145)
      • BOJ[Java] (107)
      • Programmers[Java] (32)
      • Coding_Contest (3)
    • Web (22)
      • .NET Core C# (2)
      • Java (1)
      • Oracle SQL (7)
      • Web-ProJect (3)
      • Error처리 (1)
      • Web지식 (4)
      • Javascript (1)
      • Vue (3)
    • Git (4)
    • Java_beginner(Repl.it) (55)
      • Auto-Graded-Course(AP CS A) (54)
    • 프로젝트 직딩일기 (3)
    • Hanyang_Assignment (0)
    • 이모저모 (4)
      • 잡담 (1)
      • 2021 오픈소스 컨트리뷰터 아카데미 (1)
      • DDD - 6기! (1)
    • 북리뷰 (1)
      • 리팩토링 2판 (1)
      • 클린코드 (0)

블로그 메뉴

  • 🐰GITHUB
  • ☘️포트폴리오
  • 🌸MBC개발_투표 2022
  • 🍭MBC_APP

공지사항

인기 글

태그

  • coding
  • 코딩
  • programmers
  • 프로그래머스
  • algorithm
  • Java
  • 코딩배우는 학생
  • 알고리즘
  • 코딩배우는학생
  • java basic
  • Java tutorial
  • 자바
  • 프로그래밍
  • REPL
  • Bakjoon
  • auto-graded course
  • AP CS A
  • 백준
  • 레플릿
  • repl.it

최근 댓글

최근 글

티스토리

hELLO
Blue___

코딩배우는 학생🌎

[백준/1065번] 한수 [Java]
Algorithms/BOJ[Java]

[백준/1065번] 한수 [Java]

2019. 11. 29. 21:21

문제

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

입력

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

출력

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

 


풀이

문제를 처음에 접했을 때는 1-9, 10-99, 100-999로 나누어줘야되나? 생각했지만, 잘보면 두자리수까지는 전부 적용되는 것을 확인할 수있습니다. 그렇기때문에 99까지는 99를 return하게 됩니다. 그리고 상한선이 1000까지라고 했기때문에 세자리수만 코딩하면 되는 것입니다. 그렇기 때문에 한수를 정의하는 함수는 3자리 수의 첫째자리 수 부터 셋째자리 수 까지 n1~n3로 받은 다음 등차수열이면 1을 반환하게 되는 코드입니다. math.abs()(절대값)을 사용해도 되고 아래처럼 간단하게도 표현할 수 있습니다. 이후 1000도 테스트 케이스에 있으므로 1000이 나오게되면 한수가 아닌 1000을 cnt에서 -1을 해주게 됩니다. ㅇㅅㅇ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.*;
 
class Bakjoon {
      public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
         int N=sc.nextInt();
         sc.close();
         if(N<100) {
             System.out.println(N);
         }
         else {
             int cnt=99;
             for(int i=100;i<=N;++i) {
                 cnt+=Hansu(i);
             }
             if(N==1000) {
                 cnt--;                 
             }
             System.out.println(cnt);
         } 
        }
      
      public static int Hansu(int n) {
          int n1=n%10;
          int n2=n/10%10;
          int n3=n/100%10;        
        
          if(n2*2==n1+n3) {
              return 1;
          }
          return 0;
      }      
}
                
        
 
 

 

아래에서 문제를 확인하세요

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

 

1065번: 한수

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

www.acmicpc.net

 

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

'Algorithms > BOJ[Java]' 카테고리의 다른 글

[백준/10809번] 알파벳 찾기 [Java]  (0) 2019.11.29
[백준/11720번] 숫자의 합 [Java]  (0) 2019.11.29
[백준/4673번] 셀프 넘버(Self-number)[Java]  (0) 2019.11.29
[Bakjoon/4344번] 평균은 넘겠지 [Java]  (0) 2019.11.29
[Bakjoon/8958번] OX퀴즈 [Java]  (0) 2019.11.28
    'Algorithms/BOJ[Java]' 카테고리의 다른 글
    • [백준/10809번] 알파벳 찾기 [Java]
    • [백준/11720번] 숫자의 합 [Java]
    • [백준/4673번] 셀프 넘버(Self-number)[Java]
    • [Bakjoon/4344번] 평균은 넘겠지 [Java]
    Blue___
    Blue___
    완전 연소한 불은 재를 남기지않는다 : 코딩배우는학생 🌎

    티스토리툴바