프로그래머스 3-30 TIL

Seunggyu Jung·2023년 3월 30일
0
post-thumbnail

Day 11 3/4 : 최댓값 만들기(1)

Q. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

내 풀이

function solution(numbers) {
    numbers.sort((a,b) => b - a)
    return numbers[0] * numbers[1];
}

해설

  • 1단계. 매개변수로 주어진 배열의 요소들의 범위가 0 ≤ numbers의 원소 ≤ 10,000이기 때문에, 부담없이 매개변수를 sort메서드로 내림차순으로 정렬시킨다.
  • 2단계. 그 후, 인덱스 0과 인덱스 1번째 수를 곱하면 최댓값을 만들 수 있다.

Day 11 4/4 : 팩토리얼

Q. i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.


내 풀이

function solution(n) {
    let num = 1;
    for (let i = 1; ; i++){
        num = num * i
        if (num > n) {
            return i - 1
        }
    }
}

해설

  • 1단계. 팩토리얼은 1에 곱하는 수를 1씩 늘려가며 계속 곱하는 메커니즘이라는 것을 파악한다.
  • 2단계. 조건에 적혀있듯 이 팩토리얼로 구한 수가 n보다 커질때, 바로 직전에 곱한 수를 정답으로 출력한다.

마무리

  • 화살표 함수 sort((a,b) => b - a)를 처음 써보았는데, 사고없이 잘 작동하는 것 같아 앞으로도 자주 이용해야겠다.
  • 팩토리얼을 나름 깔끔하게 풀어서 만족한다.
profile
감동을 주고픈 개발자(준비생)

0개의 댓글