코딩테스트 문제풀이

[백준 1065] 한수

지잉지잉 2021. 12. 22. 15:33

문제

 

풀이

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
    	Scanner scanner = new Scanner(System.in);
    	
    	int number = scanner.nextInt();
    	
    	scanner.close();
    	
    	int answerCount = 0;
    	
    	for (int i = 1; i <= number; i++) {
    		String numberStr = String.valueOf(i);
    		int length = numberStr.length();
    		
    		boolean isHansoo = true; // 한수인지 여부
    		int diff = -10; // 각 자리 수 차이가 -9 ~ 9 이므로 default값으로 -10 설정 
    		for (int j = 0; j < length - 1; j++) {
    			int firstNumber = Integer.parseInt(numberStr.substring(j, j+1));
    			int secondNumber = Integer.parseInt(numberStr.substring(j+1, j+2));
    			
    			if (diff == -10) diff = secondNumber - firstNumber; // 최초 각 자리 수 차이
    			// 두번째 자리 수 차이부터 서로 다르면 한수가 아닌것으로 판단
    			if (diff != secondNumber - firstNumber) { 
    				isHansoo = false;
    				break;
    			}
    		}
    		
    		if (isHansoo) {
    			answerCount++;
    		}
    	}
    	
    	System.out.println(answerCount);
    }
}
  • 숫자를 입력받아 String으로 변환후, 한 숫자씩 substring하여 사용, 연속되는 숫자의 차이가 모두 일치하는 (등차수열) 경우 한수이다.
  • 실버4 치고는 굉장히 간단했다.

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