더 크게 합치기
문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
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
[ 내가 푼 방식 ]
이 문제를 해결하려면 주어진 두 인자를 문자열 형태로 합친 후 그 값을 숫자로 다시 비교해야한다.
처음에는 단순하게 문자로 변환하고 다시 숫자로 변환하는 방식을 생각해 코드를 작성했다.
그래서 toString()을 사용해 문자로 변환하는 과정을 거친 후 조건문에서 다시 해당 값을 Number()을 사용해 숫자로 변환했다.
[ 다른사람이 푼 방식 ]
다른 사람들이 푼 방식을 보니 Math.max()를 사용했다.
check point!
Math.max(arg1, arg2, ..., argN) –인수 중 가장 큰 수를 반환
다수의 값들을 빠르게 비교해 최고값을 출력하기 용이하다.
[ 다시 풀어본 방식 ]
toString()을 제거하고 ``을 사용해 숫자를 문자로 바꾸는 단계를 간소화하였더니 확실히 속도가 더 빨라졌다.
문자로 변환하는 과정을 무조건 toString()으로만 해야한다는 고정관념을 버려야겠다.
[ 변수를 제거해서 한번 더 코드 줄여보기 ]
변수 선언 제거하고 바로 비교문에 넣었더니 속도가 더 빨라젔다.
이 방법으로 하면 Math.max()를 사용한 것 보다도 더 빠른 속도로 처리할 수 있다.
check point!
하지만 코드의 확장성을 고려했을 때는 Math.max()를 사용하는 방법이 더 좋은 코드라고 생각한다.
내가 작성한 위의 방식은 비교 대상이 2개로 제한된다.
여러개의 수를 비교해야 할 때는 Math.max()를 사용하면 훨씬 효과적으로 최고값은 도출해낼 수 있다.
[ Number()값은 변수로 선언해서 사용하는 방식]
변수로 선언한 값을 제거하고 Number()를 연속으로 실행하는 것과 Number()값은 변수로 선언해서 사용하는 방식 중에 더 빠른 방법이 어떤 것일까 궁금해져서 테스트 해보았다.
check point!
결과는 아래와 같이 변수 선언하고 조건문을 간소화한 형태로도 작성해 보았는데 속도가 오히려 떨어졌다.
확실히 변수로 선언하고 조건문으로 처리하는 단계가 조건문에서 바로 처리하는 것보다 느리다는것을 알 수 있었다.
'알고리즘 > JavaScript' 카테고리의 다른 글
프로그래머스 / 코딩 기초 트레이닝 / n의 배수 (0) | 2023.09.16 |
---|---|
프로그래머스 / 코딩 기초 트레이닝 / 덧셈식 출력하기 (0) | 2023.09.15 |
프로그래머스 / 코딩 기초 트레이닝 / 홀짝 구분하기 (0) | 2023.09.15 |
프로그래머스/ 코딩 기초 트레이닝 / 문자열 곱하기 (0) | 2023.09.15 |
프로그래머스/ 코딩 기초 트레이닝 / 문자열 붙여서 출력하기 (0) | 2023.09.15 |