Skip to content

Conversation

@uyeon0
Copy link
Collaborator

@uyeon0 uyeon0 commented Jan 22, 2026

User description

오늘도 멋져요 👍✨


PR Type

Enhancement


Description

  • 프로그래머스 12953 문제 해결을 위한 솔루션 구현

  • 최소공배수 계산을 위한 gcd, lcm 함수 추가

  • 배열의 모든 요소에 대한 최소공배수 계산


@uyeon0 uyeon0 added the programmers Programmers 문제 풀이 label Jan 22, 2026
@github-actions
Copy link

PR Reviewer Guide 🔍

🧪 No relevant tests
⚡ Recommended focus areas for review

Algorithmic Efficiency

최소공배수 계산 알고리즘의 시간 복잡도와 재귀 호출 최적화 가능성 검토 필요

function gcd(a, b) {
  if (b === 0) return a;
  return gcd(b, a % b);
}

function lcm(a, b) {
  return (a * b) / gcd(a, b);
}
Edge Case

빈 배열, 단일 요소 배열, 매우 큰 숫자 배열에 대한 테스트 케이스 추가 권장

function solution(arr) {
  let answer = arr[0];

  for (let idx = 1; idx < arr.length; idx++) {
      answer = lcm(answer, arr[idx]);
  }

  return answer;

@github-actions
Copy link

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Security
BigInt로 숫자 오버플로우 방지

최대공약수와 최소공배수 함수는 수학적으로 정확하지만, 큰 숫자에 대해 오버플로우 위험이 있습니다. BigInt를 사용하여 더 안전하고 큰 숫자를 처리할
수 있도록 개선할 수 있습니다.

Programmers/Level1/12953_N개의_최소공배수.js [8-15]

 function gcd(a, b) {
-  if (b === 0) return a;
-  return gcd(b, a % b);
+  const bigA = BigInt(a);
+  const bigB = BigInt(b);
+  return bigB === 0n ? bigA : gcd(bigB, bigA % bigB);
 }
 
 function lcm(a, b) {
-  return (a * b) / gcd(a, b);
+  return (BigInt(a) * BigInt(b)) / gcd(a, b);
 }
Suggestion importance[1-10]: 8

__

Why: BigInt 사용은 큰 숫자에 대한 안전한 계산을 보장하며, 잠재적인 오버플로우 문제를 방지할 수 있습니다. 수학적 연산의 안정성을 높입니다.

Medium
General
배열 최소공배수 계산을 reduce로 간소화

배열의 최소공배수를 계산하는 로직은 좋지만, 가독성과 재사용성을 높이기 위해 reduce 메서드를 활용하면 더 간결하고 함수형 프로그래밍 스타일로
구현할 수 있습니다.

Programmers/Level1/12953_N개의_최소공배수.js [17-25]

 function solution(arr) {
-  let answer = arr[0];
-
-  for (let idx = 1; idx < arr.length; idx++) {
-      answer = lcm(answer, arr[idx]);
-  }
-  
-  return answer;
+  return arr.reduce((acc, curr) => lcm(acc, curr));
 }
Suggestion importance[1-10]: 7

__

Why: reduce 메서드를 사용하면 코드를 더 간결하고 함수형 프로그래밍 스타일로 만들 수 있습니다. 로직의 핵심은 유지하면서 가독성을 개선합니다.

Medium

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

programmers Programmers 문제 풀이

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants