본문 바로가기

Python

[알고리즘_Programmers] 7주차 3번 문제 및 풀이

이번 포스팅에서는 "N개의 최소공배수"라는 문제에 대한 풀이를 진행해보겠다.

 

우선 문제는 다음과 같다.

 

<문제>

 

<1. 나의 풀이>

 

  • 이 문제는 2개의 수의 최소공배수를 N개의 수의 최소공배수로 확장시켜 놓은 문제이다.
  • 따라서 두 개의 수에 대한 최소공배수를 먼저 구하고, 구해진 최소공배수와 그 다음 숫자와의 최소공배수를 계속 구해나가는 방식으로 풀이를 진행했다.
  • 이 과정에서 functools 모듈에 있는 reduce 함수를 사용했다. (정말 유용한 함수이다 ^^)

 

▶ reduce 함수에 대한 부연 설명

 

  • 예시를 통해 reduce 함수가 어떻게 작동하는지 알아보자.
  • 위의 예시 코드를 보면, 1부터 5까지의 리스트의 요소 값들을 순차적으로 더해주고 있는 것을 알 수 있다.
  • 이처럼 reduce 함수를 사용하면, 리스트의 요소 값들에 대한 계산을 쉽게 처리할 수 있다.

 

<2. 다른 사람의 풀이>

 

  • 다른 사람은 어떻게 풀었나 살펴보니, pop 함수를 사용하여 접근한 것을 알 수 있었다.
  • 편의상, 두 수의 최소공배수를 반환해주는 lcm 함수는 내가 만들었던 그대로 가져와서 사용했다.
  • 내가 reduce 함수를 사용하여 리스트 요소 값들을 앞에서부터 최소공배수를 계속 구해주었다면, 이 사람은 pop 함수를 사용하여 리스트의 맨 뒤에서부터 최소공배수를 계속 구해주는 방식으로 접근했다.
  • pop 함수를 사옹해서 리스트의 요소 값이 하나만 남았을 경우, 그 값을 반환해주도록 코드를 작성했다.
  • 매번 다른 사람들의 풀이를 볼 때마다, 감탄과 박수가 절로 나온다. 세상엔 정말 대단한 사람들이 많은 것 같다...