[프로그래머스-기초] 더 크게 합치기

JE·2023년 5월 10일
0

코테/코플릿

목록 보기
3/57
post-thumbnail

더 크게 합치기

문제 설명

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다.
예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

제한사항

1 ≤ a, b < 10,000

입출력 예

abresult
991991
898898

입출력 예 설명

입출력 예 #1
a ⊕ b = 991 이고, b ⊕ a = 919 입니다. 둘 중 더 큰 값은 991 이므로 991을 return 합니다.
입출력 예 #2
a ⊕ b = 898 이고, b ⊕ a = 889 입니다. 둘 중 더 큰 값은 898 이므로 898을 return 합니다.

💻 내가 작성한 코드

function solution(a, b) {
    const num1 = Number(`${a}${b}`)
    const num2 = Number(`${b}${a}`)
    
    if(num1 < num2){
        return num2        
    }else if(num1 === num2){
        return num1
    }else{
        return num1
    }    
}

💻 다른 분이 풀어본 코드

function solution(a, b) {
    return Math.max(Number(`${a}${b}`), Number(`${b}${a}`))
}

Math.max() 메서드를 사용해 최대 값을 구하는 코드로 작성하셨다.
9줄 나온 코드를 1줄로 풀어서 가지고 왔다.

💡 알게 된 점

Math.max()

  • 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환
    (인수 중 하나라도 숫자로 변환하지 못한다면 NaN로 반환)
  • 매개변수를 제공하지 않은 경우 결과는 -Infinity

기본 문법

Math.max(0,1, ... ,N)
Math.max(1, 3, 2)//3
Math.max(1, 3, 2, 5, 8)//8
Math.max(-1, -5, -3)//-1

Infinity?

  • 전역 속성은 무한대를 나타내는 숫자 값
  • 전역 객체의 속성(전역 범위의 변수)
console.log(Infinity);          /* Infinity */
console.log(Infinity + 1);      /* Infinity */
console.log(Math.pow(10,1000)); /* Infinity */
console.log(Math.log(0));       /* -Infinity */
console.log(1 / Infinity);      /* 0 */
console.log(1 / 0);             /* Infinity */

✏️ 마치며

메서드를 많이 알고 있으면 있을 수록 알고리즘을 좀 더 간단하게
코드를 줄여서 풀 수 있다.
까먹을 때 마다 찾아서 사용할 수 있도록 기록하자.

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Infinity

profile
[프론트 애송이] 작은 깨달음도 기록하기

0개의 댓글