Problem ๐Ÿ’ป

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

 

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

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

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

๋จธ์“ฑ์ด๋„ค ํ”ผ์ž๊ฐ€๊ฒŒ๋Š” ํ”ผ์ž๋ฅผ ์—ฌ์„ฏ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ผ ์ค๋‹ˆ๋‹ค. ํ”ผ์ž๋ฅผ ๋‚˜๋ˆ ๋จน์„ ์‚ฌ๋žŒ์˜ ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n๋ช…์ด ์ฃผ๋ฌธํ•œ ํ”ผ์ž๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜์˜ ํ”ผ์ž ์กฐ๊ฐ์„ ๋จน์–ด์•ผ ํ•œ๋‹ค๋ฉด ์ตœ์†Œ ๋ช‡ ํŒ์„ ์‹œ์ผœ์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

1 ≤ n ≤ 100

์ž…์ถœ๋ ฅ ์˜ˆnresult
6 1
10 5
4 2




Approach 1 โŒ - ๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ๋ฒ•

์‚ฌ์‹ค ์–ด๋–ป๊ฒŒ ์ ‘๊ทผ์„ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€๋„ ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜๋‹ค...

๋‚˜์˜ ์ˆ˜ํ•™์  ์‚ฌ๊ณ ์ฒด๊ณ„์˜ ๋ฏธ์ˆ™ํ•จ์ด ๋“œ๋Ÿฌ๋‚œ๋‹ค.

์ˆ˜ํ•™ ์ข€ ์—ด์‹ฌํžˆ ํ• ๊ฑธ...


Approach 2 โญ•

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM, Least Common Multiple) ์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ํ”ผ์ž ํ•œ ํŒ์€ 6์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฏ€๋กœ, 6๊ณผ n(์‚ฌ๋žŒ ์ˆ˜)์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

 

๋…ผ๋ฆฌ์  ์ „๊ฐœ

1. ๋ฌธ์ œ ์ดํ•ด

ํ”ผ์ž ํ•œ ํŒ์€ 6์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ์œผ๋ฉฐ, n๋ช…์ด ๋ชจ๋‘ ๋‚จ๊น€์—†์ด ๊ฐ™์€ ์–‘์˜ ์กฐ๊ฐ์„ ๋จน์–ด์•ผ ํ•œ๋‹ค.

์ฆ‰, 6๊ณผ n์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

 

2. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM) ํ™œ์šฉ

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๋‘ ์ˆ˜์˜ ๊ณตํ†ต ๋ฐฐ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด n = 10์ผ ๋•Œ:

 • ํ”ผ์ž ํ•œ ํŒ๋‹น ์กฐ๊ฐ ์ˆ˜ = 6

 • ์‚ฌ๋žŒ ์ˆ˜ = 10

6๊ณผ 10์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 30์ด๋ฏ€๋กœ, 30์กฐ๊ฐ์ด ํ•„์š”ํ•˜๋‹ค.

์ด๋•Œ ํ”ผ์ž ํŒ ์ˆ˜๋Š” 30 ÷ 6 = 5ํŒ์ด ๋œ๋‹ค.

 

3. ํ”ผ์ž ํŒ ์ˆ˜ ๊ณ„์‚ฐ

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)๋ฅผ ํ”ผ์ž ํ•œ ํŒ๋‹น ์กฐ๊ฐ ์ˆ˜์ธ 6์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ํ•„์š”ํ•œ ํ”ผ์ž ํŒ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

= {LCM(6,n)} / 6

 


์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹จ๊ณ„

1. 6๊ณผ n์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD) ๋ฅผ ๊ตฌํ•œ๋‹ค.

GCD๋ฅผ ๊ตฌํ•˜๋ฉด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜(a, b) = (a * b) / {์ตœ๋Œ€๊ณต์•ฝ์ˆ˜}(a, b)}

 

์—ฌ๊ธฐ์„œ a = 6, b = n์ด๋‹ค.

 

GCD๋Š” “Greatest Common Divisor” ์˜ ์•ฝ์ž๋กœ, ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.๋‘ ์ˆ˜์˜ ๊ณตํ†ต๋œ ์•ฝ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด๋‹ค.
๋ฐ˜๋Œ€๋กœ LCM(Least Common Multiple)์€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋กœ, ๋‘ ์ˆ˜์˜ ๊ณตํ†ต๋œ ๋ฐฐ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

LCM๊ณผ GCD์˜ ๊ด€๊ณ„

๋‘ ์ˆ˜ a์™€ b์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)๋Š” ๋‘ ์ˆ˜์˜ ๊ณฑ์„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๋กœ ๋‚˜๋ˆˆ ๊ฐ’์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด ๊ด€๊ณ„๋Š” ์ˆ˜ํ•™์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:
์™œ ์ด ์‹์ด ์„ฑ๋ฆฝํ•˜๋Š”๊ฐ€?
• ๋‘ ์ˆ˜ a์™€ b์˜ ๊ณฑ์€ ๋‘ ์ˆ˜์˜ ๋ชจ๋“  ๊ณตํ†ต ์š”์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค.
• ๊ทธ๋Ÿฌ๋‚˜ ์ด๋•Œ ๊ณตํ†ต๋œ ์•ฝ์ˆ˜(์ตœ๋Œ€๊ณต์•ฝ์ˆ˜)๊ฐ€ ์ค‘๋ณต๋˜๊ธฐ ๋•Œ๋ฌธ์—, GCD๋กœ ๋‚˜๋ˆ„๋ฉด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

2. ๊ตฌํ•œ LCM์„ 6์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ”ผ์ž ํŒ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.


Solution ๐Ÿ’ก

 

class Solution {
  public int solution(int n) {
     // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
     int gcd = gcd(6, n);
     
     // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)๋ฅผ ๊ตฌํ•˜๊ณ  ํ”ผ์ž ํŒ ์ˆ˜ ๊ณ„์‚ฐ
     int lcm = (6 * n) / gcd;
     
     // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ํ”ผ์ž ํ•œ ํŒ๋‹น ์กฐ๊ฐ ์ˆ˜(6)๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด ํ•„์š”ํ•œ ํ”ผ์ž ํŒ ์ˆ˜
     return lcm / 6;
  }
  //์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๊ตฌํ•˜๊ธฐ
  public int gcd(int a, int b) {
      if (b == 0) return a;
      return gcd(b, a % b);
  }
}

 

์ฝ”๋“œ ์„ค๋ช…

1. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD) ๋Š” gcd ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ตฌํ•œ๋‹ค.

  • ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉํ•ด ํšจ์œจ์ ์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

2. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM) ๋Š” GCD๋ฅผ ์ด์šฉํ•ด ๊ณ„์‚ฐํ•œ๋‹ค:

 

3. ํ”ผ์ž ํŒ ์ˆ˜๋Š” LCM์„ 6์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด ๋œ๋‹ค.

 


Reference ๐Ÿ“„

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ์—!

+ Recent posts