본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:6,함수,JAVA)1065번, 한수

by 열정적인 이찬형 2021. 12. 17.

문제 링크

1065번: 한수
 
www.acmicpc.net

주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

  • BufferedReader를 사용하여 입력값을 저장합니다.
  • 입력값을 int형으로 바꾸어 한수를 구하여 결과 출력하는 함수 cal을 호출하였습니다.
  • 100이하의 수들은 모두 등차수열을 이루므로 그대로 출력하도록 하였습니다.
  • 100이상일 때에 일의 자리(units), 십의 자리(tens), 백의 자리(hundreds)의 차이가 균등한 개수를 구하였습니다.
  • 개수를 bw에 저장하였습니다.
  • BufferedWriter를 사용하여 저장된 결과를 한 번에 출력하였습니다.

결과 코드

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //입력 값을 받는 BufferedReader
        int num = Integer.parseInt(br.readLine());		//입력값 받기
        cal(num);						//함수 호출
        br.close();
    }
    public static void cal(int n) throws IOException{		//한수 출력하는 함수
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //입력 값을 출력하는 BufferedWriter
        if(n<100){
            bw.write(n + "\n");					//입력 값이 100이하일 때
        }else{
            int stack=99;
            for(int i=100;i<=n;i++){				//한 수 구하는 반복문
            	if(i<1000) {
            		 int units = i%10;
                     int tens = (i%100)/10;
                     int hundreds = (i%1000)/100;
                     if((tens-units)==(hundreds-tens)){
                         stack++;
                     }
            	}
            }
            bw.write(stack + "\n");				//한수 개수 bw에 저장
        }
        bw.flush();						//결과 출력
        bw.close();
    }
}

댓글