문제
https://school.programmers.co.kr/learn/courses/30/lessons/12940
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
public class Solution {
public int[] solution(int n, int m) {
int[] answer = new int[2];
for(int i=1;i<=n;i++){
if(n%i==0&&m%i==0)
answer[0]=i;
}
for(int i=1;i<=m;i++){
if((n*i)%m==0){
answer[1]=n*i;
break;
}
}
return answer;
}
}
풀이
(1) 최대공약수
1이상 n이하의 자연수 중 n과 m을 나눴을 때 둘 다 나머지가 없는 수를 대입.
(지금 생각해보니 i=n, i>0으로 조건문을 바꿔서 나머지가 없는 수를 바로 봤을 때 break 하는게 더 나아보임.)
(2) 최소공배수
1이상 m이하의 자연수 중 (n*i(=>자연수))%m==0이 나오는 수를 대입하고 break
↳최소공배수는 n과 m의 배수이므로 반대로 그 수를 n혹은 m으로 나눴을 때 0이어야 하니까
n의 배수를 m으로 나눴을 때 나머지가 0이면 된다는 생각에서 나온 식!
다른 사람 풀이
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 정수 삼각형 (0) | 2024.03.21 |
---|---|
[프로그래머스/C++] 구명보트 (0) | 2024.03.18 |
[프로그래머스/C#] 문자열 나누기 (0) | 2024.03.13 |
[프로그래머스/C#] 서울에서 김서방 찾기 (0) | 2024.03.13 |
[프로그래머스/C++, C#] 두 원 사이의 정수 쌍 (0) | 2024.03.04 |