๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋Š” ์ˆ˜ ์ฐพ๊ธฐ + ๐Ÿ† ๊ณ ์ˆ˜์˜ ํ’€์ด๋ฒ•

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/87389

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

function solution(n) {
    for (let i = 0; i < n; i++) {
        if (n % i === 1) {
            return i;
        }
    }
}

๋‹จ์ˆœํ•œ ๋‚˜์˜ ํ’€์ด.

์•„๋งˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””๋ฅผ ์•ˆํ–ˆ๋”๋ผ๋ฉด ์ž˜ ํ•œ ์ค„ ์•Œ๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ”๊ฒ ์ง€..!

 

 

<๋‚˜์˜ ๊ธฐ์กด ๊ณต๋ถ€ ๋ฐฉ์‹>

1. ์–ด๋–ป๊ฒŒ๋“  ํ’€์–ด๋ณธ๋‹ค.

2. ๋งž์ถ˜๋‹ค.

3. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด ๋ชจ๋ฅด๋Š” ๋ฐฉ์‹, ์ฐธ๊ณ  ํ• ๋งŒํ•œ ๋ฐฉ์‹, ๋ฉ”์„œ๋“œ ๋“ฑ์„ ๊ณต๋ถ€ํ•œ๋‹ค.

4. ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ‘ผ๋‹ค.

5. ๊ฐ€๋…์„ฑ ๋ฉด์—์„œ ์งง์€ ์ฝ”๋“œ๊ฐ€ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

 

<๊ณ ์ˆ˜๋“ค์˜ ํ’€์ด>

 

์ฒจ์—” ์•”๊ฒƒ๋„ ๋ชจ๋ฅด๊ณ  ์™œ ์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ๊ธธ๊ฒŒ ์งฐ์ง€? ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณ ์ˆ˜๋“ค์€ ๋‹ค ์ƒ๊ฐ์ด ์žˆ์—ˆ๋˜ ๊ฑฐ์‹œ๋‹ค...

๊ตณ์ด ์•ˆํ•ด๋„ ๋˜๋Š” ๊ณ„์‚ฐ์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

1. x์˜ ์ดˆ๊ธฐ ๊ฐ’ 3๋ถ€ํ„ฐ ์ง„ํ–‰
==> n์ด ์ง์ˆ˜๋ฉด 2๋กœ ๋‚˜๋ˆ„๋ฉด ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— x๋Š” 3๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  n์ด 1์„ ์ œ์™ธํ•œ ํ™€์ˆ˜ ์ผ ๊ฒฝ์šฐ ๋ฌด์กฐ๊ฑด 2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™€์ˆ˜๋Š” ์ฒดํฌํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์ง์ˆ˜๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
2. ์ง์ˆ˜ n์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ฒดํฌํ•  ๊ฒฝ์šฐ x๋Š” n-1๊นŒ์ง€ ๊ฒ€์‚ฌํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.
n % n-1 === 1์ด๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์˜ ์กฐ๊ฑด์€ x < n-1๊นŒ์ง€ !

 

์ด๋ฒˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋Š” ์ž…์ถœ๋ ฅ ์˜ˆ 1, 2์˜ ์„ค๋ช…์ด๋ž‘ ์ œํ•œ ์‚ฌํ•ญ์„ ๋ณด๋ฉด ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค

์ œํ•œ์‚ฌํ•ญ
3 ≤ n ----> 3 % 2 === 1 -> return 23๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ, 3์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง์ˆ˜(4, 10) % 3 === 1 --> return 3๋ถ€ํ„ฐ ์‹œ์ž‘12๋ฅผ 11๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๊ณ , 11๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ ----> n % n-1 === 1

 

 

1๋ฒˆ ๋ฌธ์ œ์—์„œ ํ™•์—ฐํžˆ ์†๋„ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ : 5.21ms

๊ณ ์ˆ˜๋‹˜์˜ ์ฝ”๋“œ : 3.99 ms

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” 0(n) ๋ณด๋‹ค ์ค„์ผ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ง€๋งŒ ๊ฐ™์€ O(n) ์ผ์ง€๋ผ๋„ ์‹œ๊ฐ„ ์†๋„๋Š” ์ตœ์†Œ 2๋ฐฐ์ •๋„ ์ฐจ์ด ๋‚ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ฒ˜์Œ์— ์ง์ˆ˜๋ƒ ํ™€์ˆ˜๋ƒ ํŒ๋‹จ์œผ๋กœ ์ง์ˆ˜๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋˜๊ธฐ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค

 

์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์—„์ฒญ ๋งŽ๋‹ค๋ฉด...?! 

ํ”„๋กœ๊ทธ๋žจ์ด ์—„์ฒญ ๋Š๋ ค์งˆ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค...!

 

 

+

break ๋ฌธ์€ ์ž์ฃผ ์“ฐ์ง€ ์•Š๋Š”๊ฒŒ ์ข‹๋‹ค?

- ์ฝ”๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ๋Š๊ณ  ๋‚˜์˜ค๋Š” ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์—

- ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

 

๋ผ๋Š” ์˜๊ฒฌ๋„ ์žˆ๋‹ค๋Š”๊ฑธ ์•Œ๋ ค์ฃผ์‹ฌ. 

728x90
๋ฐ˜์‘ํ˜•