알고리즘/BJ

[BJ] 백준 1065 한수 (JAVA)

9_yoon 2022. 3. 28. 21:46
728x90
반응형

문제

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

 

풀이 방법

함수 카테고리에 있는 기본 문제다.
나는 한수인지 아닌지 체크해주는 함수를 만들어서 풀이했다.
함수에는 우선 10미만인 수는 모두 한수이기 때문에 true를 반환해주고, 10이상부터는 수를 String으로 변환 후 0번째 값과 1번째 값의 차이를 계산해서 그 차이값을 저장해줬다.
그리고 이제 정수를 한자리수씩 보면서 본인과 그 다음 자리 수의 차이가 이전에 구해놨던 gap과 다르다면 바로 false를 반환해줬다.
그리고 이제 메인함수에서는 true이면 한수이므로 cnt변수에 1를 추가해주었고, 마지막에 cnt를 출력해줬다.

 

제출 코드

import java.io.*;
public class BJ_1065_한수 {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int cnt=0;
		for (int i = 1; i <= N; i++) {
			if(check(i)) {
				cnt++;
			}
		}
		System.out.println(cnt);
	}

	private static boolean check(int i) {
		if(i<10) return true;
		String n  = Integer.toString(i);
		int gap = (n.charAt(0)-'0')- (n.charAt(1)-'0');
		for (int j = 0; j < n.length()-1; j++) {
			if(((n.charAt(j)-'0')- (n.charAt(j+1)-'0')) != gap) return false;
		}
		return true;
	}

}

 

728x90
반응형