Problem ๐Ÿ’ป

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

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. n์„ x๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋„๋ก ํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜ x๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹ต์ด ํ•ญ์ƒ ์กด์žฌํ•จ์€ ์ฆ๋ช…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ œํ•œ์‚ฌํ•ญ
  • 3 ≤ n ≤ 1,000,000

์ž…์ถœ๋ ฅ ์˜ˆnresult
10 3
12 11

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • 10์„ 3์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๊ณ , 3๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ, 3์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • 12๋ฅผ 11๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๊ณ , 11๋ณด๋‹ค ์ž‘์€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ, 11์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 


Approach 2 โญ• - ๋…ผ๋ฆฌ์  ์ ‘๊ทผ๋ฒ•

๋ฌธ์ œ ์š”์•ฝ :

์ž์—ฐ์ˆ˜ n์„ x๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜ x๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐœ๋… :

1. ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์˜ ์ •์˜ :

์ˆ˜ n์„ x๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, n % x =1์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ x๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.

 

2. ์กฐ๊ฑด ๋ถ„์„ :

n%n=1์ด ์„ฑ๋ฆฝํ•˜๋ ค๋ฉด n์—์„œ 1์„ ๋บ€ ๊ฐ’์ด x๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ ธ์•ผ ํ•œ๋‹ค.

์ฆ‰,n-1x

๋”ฐ๋ผ์„œ x๋Š” n-1์˜ ์•ฝ์ˆ˜์ค‘์—์„œ 1๋ณด๋‹ค ํฐ ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 10์„ 3์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๋ชซ์ด 3์ด๊ณ  ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๋‹ค.

10 = 3*3+1

๋‚˜๋จธ์ง€๋Š” ์ˆซ์ž๋ฅผ ๋‚˜๋ˆด์„ ๋•Œ ๋”ฑ ๋–จ์–ด์ง€์ง€ ์•Š๊ณ  ๋‚จ๋Š” ๋ถ€๋ถ„์ด๋‹ค.๊ทธ๋ž˜์„œ n-1 = y * xx๊ฐ€ 1์ด๋ฉด ๋‚˜๋จธ์ง€๋Š” 0์ด๋ฏ€๋กœ x๋Š” 2 ์ด์ƒ์ด๋‹ค. 

 

3. ๋ฒ”์œ„์˜ ์ œํ•œ :

x๋Š” ์ž์—ฐ์ˆ˜์ด๋ฏ€๋กœ x>= 1์ด์–ด์•ผ ํ•œ๋‹ค.

x=1์ผ๋•Œ n%n=0์ด๋ฏ€๋กœ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ ค๋ฉด x >=2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.  

 


๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1. ์ˆ˜ํ•™์  ์ ‘๊ทผ :

n-1์„ ๊ตฌํ•œ๋‹ค.

n-1์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด์„œ x >=2์ธ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. 

 

2. ํšจ์œจ์  ๋ฐ˜๋ณต :

x๋ฅผ 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ n%n=1์ด ๋˜๋Š” x๋ฅผ ์ฐพ๋Š”๋‹ค.

x๊ฐ€ n-1์˜ ์•ฝ์ˆ˜์ž„์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. 

x๋ฅผ 2๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ 1์”ฉ ๋Š˜๋ ค๊ฐ€๋‹ˆ๊น ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋Š” ์ˆœ๊ฐ„์˜ x๊ฐ€ ์ตœ์†Œ๊ฐ’์ด๋‹ค.


๋…ผ๋ฆฌ ๋‹จ๊ณ„๋ณ„ ์„ค๋ช…

1. ์ž…๋ ฅ ํ™•์ธ :

์ž์—ฐ์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค.

 

2. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์กฐ๊ฑด ํ™•์ธ :

x๋ฅผ 2๋ถ€ํ„ฐ n-1๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

n%n=1์ธ ๊ฒฝ์šฐ x๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

x๋ฅผ 2๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋”ํ•ด ๋ณด๋ฉด์„œ n%x=1์ด ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

3.์ถœ๋ ฅ :

ํ•ญ์ƒ ๋‹ต์ด ์กด์žฌํ•˜๋ฏ€๋กœ, ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋Š” ์ฆ‰์‹œ x๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

์ˆซ์ž n-1์€ ํ•ญ์ƒ ์กด์žฌํ•˜๊ณ  , x๋Š” n-1์˜ ์•ฝ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.


Solution ๐Ÿ’ก

public class Solution {
   public int solution(int n) {
      // x๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ n์„ x๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ธ ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
      for (int x = 1; x < n; x++) {
          if (n % x == 1) {
               return x; //์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” x๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
          }
      }
      return -1 // ๋‹ต์ด ํ•ญ์ƒ ์กด์žฌํ•˜๋ฏ€๋กœ ์ด ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. 
   }
}

Reference ๐Ÿ“„

+ Recent posts