๊ธฐ๋ก๋ฐฉ

BOJ_4673 : ์…€ํ”„ ๋„˜๋ฒ„ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_4673 : ์…€ํ”„ ๋„˜๋ฒ„

Soom_1n 2022. 9. 28. 10:49

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

4673๋ฒˆ: ์…€ํ”„ ๋„˜๋ฒ„

์…€ํ”„ ๋„˜๋ฒ„๋Š” 1949๋…„ ์ธ๋„ ์ˆ˜ํ•™์ž D.R. Kaprekar๊ฐ€ ์ด๋ฆ„ ๋ถ™์˜€๋‹ค. ์–‘์˜ ์ •์ˆ˜ n์— ๋Œ€ํ•ด์„œ d(n)์„ n๊ณผ n์˜ ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ์ •์˜ํ•˜์ž. ์˜ˆ๋ฅผ ๋“ค์–ด, d(75) = 75+7+5 = 87์ด๋‹ค. ์–‘์˜ ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 10000 ์ดํ•˜์˜ ์…€ํ”„๋„˜๋ฒ„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

public class Main {
    public static void main(String[] args) {
        final int MAX = 10000;
        boolean arr[] = new boolean[MAX+1];

        for (int i = 1; i <= MAX; i++){
            int j = i;
            if (!arr[j]){
                while (true){
                    int temp = j;
                    for (String s : Integer.toString(j).split(""))
                        temp += Integer.parseInt(s);
                    if (temp < MAX){
                        arr[temp] = true;
                        j = temp;
                    }
                    else break;
                }
            }
        }
        for (int j = 1; j < MAX; j++){
            if (!arr[j]) System.out.println(j);
        }
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์ธ๋ฑ์Šค๋กœ ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ์ฒดํฌํ•˜๋Š” boolean ๋ฐฐ์—ด arr๋ฅผ 10001ํฌ๊ธฐ๋กœ ์„ ์–ธํ•œ๋‹ค.
  • 1๋ถ€ํ„ฐ 10000๊นŒ์ง€ i๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
    • arr[j]๊ฐ€ false๋ฉด j๋ถ€ํ„ฐ 10000๊นŒ์ง€ ์…€ํ”„๋„˜๋ฒ„ ์ˆ˜์—ด์„ ๊ณ„์‚ฐํ•ด arr์— ์ฒดํฌํ•œ๋‹ค.
    • true๋ฉด ์ด๋ฏธ ๊ณ„์‚ฐํ–ˆ๋˜ ์ˆ˜์—ด์ด๋ฏ€๋กœ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • while๋ฌธ ์•ˆ์˜ if๋ฌธ์„ else๋ฌธ์„ ๋นผ๋Š” ์‹์œผ๋กœ ๋ฐ”๊ฟจ์œผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ ๊ฐ™๋‹ค.
    • if๋ฌธ๋„ MAX ๋ฏธ๋งŒ์œผ๋กœ ์ฒดํฌํ•œ ๊ฒƒ์ด ์˜ค๋ฅ˜์ด๋‹ค. ์šฐ์—ฐํžˆ 10000์ด ์…€ํ”„ ๋„˜๋ฒ„๊ฐ€ ์•„๋‹ˆ์–ด์„œ ๋งž์•˜์ง€๋งŒ, ๋ฌธ์ œ ์กฐ๊ฑด์œผ๋กœ๋Š” 10000๋„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
    • ์ถœ๋ ฅ์—์„œ๋„ MAX ๋ฏธ๋งŒ์œผ๋กœ ํ•ด์„œ ํ†ต๊ณผ๋˜์—ˆ๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1427 : ์†ŒํŠธ์ธ์‚ฌ์ด๋“œ  (0) 2022.09.30
BOJ_2581 : ์†Œ์ˆ˜  (0) 2022.09.29
BOJ_1253 : ์ข‹๋‹ค  (0) 2022.09.24
BOJ_1940 : ์ฃผ๋ชฝ  (0) 2022.09.24
BOJ_2018 : ์ˆ˜๋“ค์˜ ํ•ฉ 5  (0) 2022.09.24