이번 포스팅에서는 "N개의 최소공배수"라는 문제에 대한 풀이를 진행해보겠다.
우선 문제는 다음과 같다.
<문제>
<1. 나의 풀이>
- 이 문제는 2개의 수의 최소공배수를 N개의 수의 최소공배수로 확장시켜 놓은 문제이다.
- 따라서 두 개의 수에 대한 최소공배수를 먼저 구하고, 구해진 최소공배수와 그 다음 숫자와의 최소공배수를 계속 구해나가는 방식으로 풀이를 진행했다.
- 이 과정에서 functools 모듈에 있는 reduce 함수를 사용했다. (정말 유용한 함수이다 ^^)
▶ reduce 함수에 대한 부연 설명
- 예시를 통해 reduce 함수가 어떻게 작동하는지 알아보자.
- 위의 예시 코드를 보면, 1부터 5까지의 리스트의 요소 값들을 순차적으로 더해주고 있는 것을 알 수 있다.
- 이처럼 reduce 함수를 사용하면, 리스트의 요소 값들에 대한 계산을 쉽게 처리할 수 있다.
<2. 다른 사람의 풀이>
- 다른 사람은 어떻게 풀었나 살펴보니, pop 함수를 사용하여 접근한 것을 알 수 있었다.
- 편의상, 두 수의 최소공배수를 반환해주는 lcm 함수는 내가 만들었던 그대로 가져와서 사용했다.
- 내가 reduce 함수를 사용하여 리스트 요소 값들을 앞에서부터 최소공배수를 계속 구해주었다면, 이 사람은 pop 함수를 사용하여 리스트의 맨 뒤에서부터 최소공배수를 계속 구해주는 방식으로 접근했다.
- pop 함수를 사옹해서 리스트의 요소 값이 하나만 남았을 경우, 그 값을 반환해주도록 코드를 작성했다.
- 매번 다른 사람들의 풀이를 볼 때마다, 감탄과 박수가 절로 나온다. 세상엔 정말 대단한 사람들이 많은 것 같다...
'Python' 카테고리의 다른 글
[알고리즘_Programmers] 8주차 1번 문제 및 풀이 (0) | 2020.06.08 |
---|---|
[Ch 8. 자연어 처리 시작하기] from "파이썬으로 데이터 주무르기(민형기 지음)" (0) | 2020.06.08 |
[알고리즘_Programmers] 7주차 2번 문제 및 풀이 (0) | 2020.06.03 |
[Ch 7. 시계열 데이터를 다뤄보자] from "파이썬으로 데이터 주무르기(민형기 지음)" (0) | 2020.06.03 |
[알고리즘_Programmers] 7주차 1번 문제 및 풀이 (0) | 2020.06.03 |