▶삼항연산자는 많아지는 if() 조건문을 보다 간결하게 표현할 수 있습니다. 이번 포스팅에서는 삼항연산자뿐 아니라 다중 삼항연산자를 사용하기에 적절한 문제가있어서 정리해보고자 합니다.
문제설명
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr1의 길이 ≤ 100
- 1 ≤ arr2의 길이 ≤ 100
- 1 ≤ arr1의 원소 ≤ 100
- 1 ≤ arr2의 원소 ≤ 100
- 문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.
입출력 예 & 설명
- 입출력 예 #1
- 예제 1번에서는 arr1의 길이는 2이고 arr2의 길이는 3으로 arr2의 길이가 더 깁니다. 따라서 arr2가 arr1보다 크므로 -1을 return 합니다.
- 입출력 예 #2
- 예제 2번에서는 arr1의 길이과 arr2의 길이가 4로 같습니다. arr1의 모든 원소의 합은 100 + 17 + 84 + 1 = 202이고 arr2의 모든 원소의 합은 55 + 12 + 65 + 36 = 168으로 arr1의 모든 원소의 합이 더 큽니다. 따라서 arr1이 arr2보다 크므로 1을 return 합니다.
- 입출력 예 #3
- 예제 3번에서는 arr1의 길이와 arr2의 길이가 5로 같고 각 배열의 모든 원소의 합 또한 15로 같습니다. 따라서 arr1과 arr2가 같으므로 0을 return 합니다.
나의 풀이
다중삼항 연산자를 모르고 있어서 처음엔 삼항연산자를 사용하여 구해보고자 했지만 쉽지 않아 if() 문과 else if() 문만을 사용하여 값을 구했습니다. 그렇다 보니 코드가 간결하지 못하고, 복잡해졌습니다. 먼저 arr1 배열과 arr2 배열이 같을 때 reduce()를 사용하여 각 배열의 합을 구해주고, arr1과 arr2의 길이가 같은데 각 요소의 합을 비교하여 더 큰 값을 문제에서 정의한 반환값을 리턴해줍니다.
■ 다중 삼항 연산자
하나 이상의 조건이 있을 경우, 물음표를 여러 개 사용하여 표현할 수 있다.
const info = prompt('What is your number?');
if (info <= 5) {
alert("5 이하입니다.");
} else if (info <= 10) {
alert("10 이하입니다.");
} else if (info <= 15) {
alert("15 이하입니다.");
} else {
alert("15보다 큽니다.");
}
다른 풀이
"나의 풀이"와 동일하게 reduce()함수를 사용하여 arr1과 arr2의 배열의 합을 구해주었습니다.
7번째 줄에서 기본 삼항연산자를 사용하여 리턴할 answer에 값을 넣어주고, 9번째 else 문 (arr1과 arr2의 길이가 같을 때)에서 다중 삼항연산자를 사용하여 문제에서 정의한대로 반환값을 넣어주었습니다.
다중 삼항 연산자를 알았더라면 "나의 풀이"처럼 복잡하고 간결하지 않은 코드가 나오지 않았을 텐데 그래도 이번 기회에 다중 삼항연산자를 알아갈 수 있어서 좋은 기초 문제였다고 생각합니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv0 부분 문자열 이어 붙여 문자열 만들기 (JavaScript) (0) | 2024.01.20 |
---|---|
[프로그래머스] 공백으로 구분하기 2 (JavaScript) (0) | 2024.01.20 |
[프로그래머스] 순서 바꾸기 (JavaScript) (0) | 2024.01.15 |
[프로그래머스] 첫 번째로 나오는 음수 (JavaScript) (0) | 2024.01.14 |
[프로그래머스] Lv0 원소들의 곱과 합(JavaScript) (0) | 2024.01.13 |