ν‹°μŠ€ν† λ¦¬ λ·°

λ°˜μ‘ν˜•

문제 μ„€λͺ…

두 수λ₯Ό μž…λ ₯λ°›μ•„ 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄ λ³΄μ„Έμš”. λ°°μ—΄μ˜ 맨 μ•žμ— μ΅œλŒ€κ³΅μ•½μˆ˜, κ·Έλ‹€μŒ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ„£μ–΄ λ°˜ν™˜ν•˜λ©΄ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 두 수 3, 12의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 3, μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 12μ΄λ―€λ‘œ solution(3, 12)λŠ” [3, 12]λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ œν•œ 사항

  • 두 μˆ˜λŠ” 1이상 1000000μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

n m return
3 12 [3, 12]
2 5 [1, 10]

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1
μœ„μ˜ μ„€λͺ…κ³Ό κ°™μŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2
μžμ—°μˆ˜ 2와 5의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 1, μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 10μ΄λ―€λ‘œ [1, 10]을 리턴해야 ν•©λ‹ˆλ‹€.

풀이

class Solution {
  public int[] solution(int n, int m) {
      //μ΅œμ†Œκ³΅λ°°μˆ˜ μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²• μ‚¬μš©
		int[] answer = new int[2];
		int big, small, nmg;
		
		//λ‘˜ 수λ₯Ό μž‘μ€μˆ˜μ™€ 큰수 νŒλ³„
		if(n>m) {
			big = n;
			small = m;
		} else {
			big = m;
			small = n;
		}
		
		//반볡문
		while(true) {
			nmg = big%small;
			
			if(nmg == 0) {
				//λ‚˜λ¨Έμ§€κ°€ 0일 λ•Œ
				answer[0] = small; //μž‘μ€ μˆ˜κ°€ μ΅œλŒ€ κ³΅μ•½μˆ˜
				answer[1] = n * m / small; //μ΅œμ†Œ 곡배수
				break;
			} else {
				big = small;
				small = nmg;
			}
		}
      return answer;
  }
}

μ΅œλŒ€κ³΅μ•½μˆ˜ μ΅œλŒ€κ³΅λ°°μˆ˜λŠ” μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ μ€€λΉ„ν•˜λ©΄μ„œ μ•Œκ³ λ¦¬μ¦˜ μ—΄μ‹¬νžˆ ν’€κ³  μ™Έμ› κΈ° λ•Œλ¬Έμ— 금방 ν’€ 수 μžˆμ—ˆλ‹€. μ²˜μŒμ— λͺ«λ„ κ΅¬ν–ˆμ—ˆλŠ”λ° λͺ«μ€ ν•„μš”κ°€ μ—†κ΅¬λ‚˜. 

예~

λ°˜μ‘ν˜•
λŒ“κΈ€