์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [Backjoon_4375] 1 (Java)

    [Backjoon_4375] 1 (Java)

    ๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/4375 4375๋ฒˆ: 1 2์™€ 5๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š” ์ •์ˆ˜ n(1 ≤ n ≤ 10000)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ n์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. www.acmicpc.net ๋ฌธ์ œ ์š”์•ฝ ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ 2์™€ 5๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š” ์ •์ˆ˜ n(1 ≤ n ≤ 10000)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ n์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค. ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , n์ด ์ฃผ์–ด์ง„๋‹ค. 1๋กœ ์ด๋ฃจ์–ด์ง„ n์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์˜ ์ž๋ฆฌ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹œ๊ฐ„ ์ œํ•œ 1์ดˆ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ 128MB ๋ฌธ์ œ ํ’€์ด n์„ ์ž…๋ ฅ๋ฐ›์•„ n์˜ ๋ฐฐ์ˆ˜์ค‘ 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ฐ€์žฅ ์ž‘์€..

    ๋ธŒ๋ฃจํŠธํฌ์Šค(3) ์ˆœ์—ด

    ๋ธŒ๋ฃจํŠธํฌ์Šค(3) ์ˆœ์—ด

    ์ˆœ์—ด ์ˆœ์—ด(Purmutation)์€ ์ˆซ์ž๋ฅผ ์‚ฌ์ „์ˆœ์œผ๋กœ ๋‚˜์—ดํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”๋ณด๊ธฐ Ex) 1,2,3 ์ˆœ์—ด 1 2 3 -> ์‹œ์ž‘ ์ˆœ์—ด(์˜ค๋ฆ„์ฐจ์ˆœ) 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 -> ๋ ์ˆœ์—ด(๋‚ด๋ฆผ์ฐจ์ˆœ) ์ˆœ์—ด์€ ์‹œ์ž‘์ง€์ , ๋์ง€์ , ๋‹ค์Œ ์ˆœ์—ด,์ด์ „ ์ˆœ์—ด๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œ์ž‘์ˆœ์—ด๊ณผ ๋ ์ˆœ์—ด์„ ๊ฐ๊ฐ ์˜ค๋ฆ„์ฐจ์ˆœ๊ณผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๋‹ค์Œ ์ˆœ์—ด ์ˆœ์—ด์˜ ๋‹ค์Œ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋์ˆœ์—ด์„ ๊ตฌํ•ด์„œ ๊ทธ ๋‹ค์Œ ๊ตฌํ•ด์ฃผ์–ด ํ•ด๊ฒฐํ•œ๋‹ค. private boolean nextPermutation(int[] numbers){ int prevIndex; int n = numbers.length; int nextIndex = n-1; int changeIndex = -1; for(int i = n-2; i >= ..

    ๋ธŒ๋ฃจํŠธํฌ์Šค(2) ์žฌ๊ท€

    ๋ธŒ๋ฃจํŠธํฌ์Šค(2) ์žฌ๊ท€

    ์žฌ๊ท€๋ฅผ ์“ฐ๋ฉด ์žฌ๊ท€๋ฅผ ์“ฐ๋ฉด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์žฌ๊ท€๋ฅผ ์จ์„œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‘๊ฐ€์ง€์ด๋‹ค. 1. ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(P) n๊ฐœ์˜ ์ˆ˜๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜์ด๋‹ค.(์ค‘๋ณต๊ฐ€๋Šฅ) -> O(n!) /** * index -> ํ˜„์žฌ ์ˆ˜๋ฅผ ๋†“๋Š” ์œ„์น˜ * arr -> ํ™•์ธํ•˜๋ ค๊ณ  ๋งŒ๋“œ๋Š” ๋ฐฐ์—ด */ public void recursive1(int index, int[] arr){ if(index == arr.length){ //์ข…๋ฃŒ ์กฐ๊ฑด } for(int i = 1; i O(2^n) /** * index -> ํ˜„์žฌ ์ˆ˜๋ฅผ ๋†“๋Š” ์œ„์น˜ * arr -> ํ™•์ธํ•˜๋ ค๊ณ  ๋งŒ๋“œ๋Š” ๋ฐฐ์—ด */ public void recursive2(int cnt, int[] arr, int value, int n){ if(ind..

    ๋ธŒ๋ฃจํŠธํฌ์Šค(1) - ๋ฌด์ž‘์ • ํ•ด๋ณด๊ธฐ

    ๋ธŒ๋ฃจํŠธํฌ์Šค(1) - ๋ฌด์ž‘์ • ํ•ด๋ณด๊ธฐ

    ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ•ด๋ณด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ฌด์ž‘์ • ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค ๊ตฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ ๋ฌธ์ œ : n์ด ์ฃผ์–ด์กŒ์„๋•Œ, 1๋ถ€ํ„ฐ n ์ค‘์— 2์˜ ๋ฐฐ์ˆ˜์˜ ์ˆ˜๋Š”? (1