[BOJ] 12873. ๊ธฐ๋…ํ’ˆ (๐Ÿฅˆ, ํ)

lemythe423ยท2024๋…„ 1์›” 13์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
101/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

์ฒ˜์Œ ๋ฐฑ์ค€์ด๊ฐ€ ์„œ ์žˆ๋Š” ์œ„์น˜๋ฅผ idx ๋ผ๊ณ  ํ•˜์ž. ์—ฌ๊ธฐ์„œ t^3 ๋งŒํผ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ํ•œ ์ค„๋กœ ์„œ ์žˆ๊ณ  ๊ฐ€์žฅ ๋๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด ๋‹ค์‹œ ์ฒ˜์Œ์œผ๋กœ ๋˜๋Œ์•„์˜ค๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— t^3์„ ์ „์ฒด ์„œ ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ ์‹ค์ œ ์ค‘๋ณต ์—†์ด ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฆฌ์ด๋‹ค. ํ˜„์žฌ ์„œ ์žˆ๋Š” ์œ„์น˜๋„ ํฌํ•จํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฆฌ์—์„œ 1์„ ๋นผ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋‹จ๊ณ„๋ณ„๋กœ ์ถœ๋ฐœํ•˜๋Š” ์œ„์น˜๋Š” ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์œ„์น˜ํ–ˆ๋˜ ๊ณณ์ด๋ฏ€๋กœ ์ด์ „์˜ idx ๊ฐ’์„ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฆฌ์— ๋”ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ตœ๋Œ€ N์ด 5000์ด๊ธฐ ๋•Œ๋ฌธ์— int์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„œ๊ฒŒ ๋œ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† double ๋กœ ๊ณ„์‚ฐํ•˜๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์— ์–ป์–ด์ง€๋Š” ๋‚˜๋จธ์ง€ ๊ฐ’์„ int๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ์‚ฌ๋žŒ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋œ๋‹ค.

์ž๋ฐ”์˜ ๊ฒฝ์šฐ list์—์„œ remove(int n) ์ด๋ฉด n ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๊ฐ’ ์ œ๊ฑฐ

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            list.add(i + 1);
        }

        int t = 1;
        int idx = 0;
        while (list.size() > 1) {
            idx = (int) ((idx + Math.pow(t, 3) - 1) % list.size());
            list.remove(idx);
            t++;
        }

        System.out.println(list.get(0));
    }
}
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€