πŸ“– [λ°±μ€€μ•Œκ³ λ¦¬μ¦˜ 풀이] Q.1065 ν•œμˆ˜ λ¬Έμ œν’€μ΄

πŸ“– 문제

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

μ–΄λ–€ μ–‘μ˜ μ •μˆ˜ X의 각 μžλ¦¬κ°€ λ“±μ°¨μˆ˜μ—΄μ„ 이룬닀면, κ·Έ 수λ₯Ό ν•œμˆ˜λΌκ³  ν•œλ‹€.
λ“±μ°¨μˆ˜μ—΄μ€ μ—°μ†λœ 두 개의 수의 차이가 μΌμ •ν•œ μˆ˜μ—΄μ„ λ§ν•œλ‹€. N이 μ£Όμ–΄μ‘Œμ„ λ•Œ,
1보닀 ν¬κ±°λ‚˜ κ°™κ³ , N보닀 μž‘κ±°λ‚˜ 같은 ν•œμˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 

πŸ” 접근법

ν•œμˆ˜ λ¬Έμ œμž…λ‹ˆλ‹€.

ν•œ 자릿수 Ex {1 , 2 , 3 . . .} 
두 자릿수 EX {12, 13, 14 . . .}
λŠ” 이미 차이가 μΌμ •ν•œ λ“±μ°¨μˆ˜μ—΄μ„ μ΄λ£Ήλ‹ˆλ‹€.

κ·ΈλŸ¬λ―€λ‘œ 두 자릿수 μ΄ν•˜λŠ”
μžμ—°μŠ€λŸ½κ²Œ ν•œμˆ˜μ— ν•΄λ‹Ήλ©λ‹ˆλ‹€.

μ„Έ μžλ¦Ώμˆ˜λΆ€ν„° 각 μžλ¦¬κ°€ λ“±μ°¨μˆ˜μ—΄μ„ μ΄λ£¨λŠ”μ§€ ν™•μΈν•˜λ©΄ λ©λ‹ˆλ‹€.

πŸ’» μ½”λ“œ

package problem.brute;

import java.io.*;

public class Main_1065 {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String n = br.readLine();
        int count = 0;
        if(Integer.parseInt(n) < 100){
            count+=Integer.parseInt(n);
        }
        else{
            count = 99;
        }
        for (int i=100; i<=Integer.parseInt(n); i++) {
            if (solve(Integer.toString(i)))
                count++;
        }
        bw.write(Integer.toString(count));
        bw.flush();
        bw.close();
        br.close();
    }
    public static boolean solve (String n){
        String temp[] = n.split("");
        int diff = 0;
        if(n.length() >= 2)
            diff = Integer.parseInt(temp[1]) - Integer.parseInt(temp[0]);
        for(int i=2; i<temp.length; i++){
            if( Integer.parseInt(temp[i]) - Integer.parseInt(temp[i-1]) != diff)
                return false;
        }
        return true;
    }
}

Written on September 23, 2020