개인 플젝 진행 중이라 오늘 진행 중 있었던 오류들을 적으려다가 오늘 푼 코테문제도 정리하고 싶어 오늘 TIL 작성 두개 하려고 합니다..
주어진 두 수의 최대공약수, 최소공배수 구하기가 문제이고
접근 방식을
1. 받아온 두 수 중에 작은 값 선별해서 별도의 min 변수에 넣어주고
2. 1부터 min (i가 1~min)까지 for문을 돌면서
3. 받아온 두 수 모두 i로 나눈 나머지가 0인 값을 찾아 최대공약수를 찾고
4. 최대공배수는 받아온 두 수 중 큰 수 % 작은수 == 0 이면 작은수가 큰 수의 약수이니 최소공배수는 큰수이고, 큰수 % 작은수 != 0이면 큰수*작은수 를 해야 최소공배수를 구할 수 있다고 접근했다
접근방식 4번의 "큰수 % 작은수 != 0이면 큰수*작은수 => 최소공배수" 여기가 오류가 나서 구글링을 해보니
두 수의 최대공약수를 구하고 두 수의 곱에 구한 최대공약수를 나누면 최소공배수가 나온다는 사실을 알게 되었다.
let min = n > m ? m : n // 두 수 중에 작은 값 min에 담기
입력받은 m과 n을 삼항연산자로 작은 값을 구해 min에 넣어주고
for (let i = 1; i <= min; i++) {
if (n % i == 0 && m % i == 0) {
x = i
}
}
for 문을 돌면서 두 수를 i로 나눈 나머지가 둘 다 0인 수, 즉 두 수의 약수를 찾아 x변수에 넣어주었다
for문을 다 돌고 나면 x에는 두 수의 최대공약수가 들어가있을 것이다
answer.push(x)
x = n * m / answer[0]
answer.push(x)
return answer
answer 배열에 최대공약수, 최소공배수를 push해서 return 하는게 조건이라
최대공약수인 x 와 두 수를 곱한 값에 x를 나눠줘 최소공배수를 구해 answer 배열에 넣어주는 것으로 끝!
최소공배수 = 두 수의 곱 / 최대공약수
잊지말기
'TIL' 카테고리의 다른 글
| 6월 1일 TIL - 숫자가 아니면 true 반환하는 isNaN() (0) | 2023.06.01 |
|---|---|
| 5월 31일 TIL (2) - input창 버튼 누를때마다 reload 현상 막기 (0) | 2023.05.31 |
| 5월 30일 TIL - (개인프로젝트) api로 받아온 정보를 html에 넣기 (0) | 2023.05.30 |
| 5월 26일 TIL - reduce() (0) | 2023.05.26 |
| 5월 25일 TIL (2) | 2023.05.25 |