🔖 문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
- 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
📋 입출력 예
a | b | result |
9 | 91 | 991 |
89 | 8 | 898 |
🔖 입출력 예 설명
입출력 예 #1
a
⊕b
= 991 이고,b
⊕a
= 919 입니다. 둘 중 더 큰 값은 991 이므로 991을 return 합니다.
입출력 예 #2
a
⊕b
= 898 이고,b
⊕a
= 889 입니다. 둘 중 더 큰 값은 898 이므로 898을 return 합니다.
🧾 기본 제공 코드
function solution(a, b) {
var answer = 0;
return answer;
}
🗳️ (직접 작성한) 풀이 코드
function solution(a, b) {
const sum = (a, b) => Number(String(a) + String(b));
if (sum(a, b) > sum(b, a)) {
return sum(a, b);
} else if (sum(a, b) < sum(b, a)) {
return sum(b, a);
} else {
return sum(a, b);
}
}
위와 같이 문제를 풀이했다.
문자열과 숫자 타입의 특성을 이해하고 있다면 쉽게 풀 수 있는 문제였다.
어렵지 않았고 단순한 유형의 문제였다.
다만 풀이 이후 드는 2가지 생각이 있었다.
1. 가독성이 떨어진다.
- 조건문 비교를 위해 사용된 sum 함수에 전달된
a
와b
의 구분이 육안으로 봤을 때 혼란스럽게 보일 수 있었다.
2. 리팩토링을 통해 코드를 더욱 쉽게 풀어낼 수 있지 않을까?
하는 2가지 생각이 들었다.
그래서 다른 사람들의 문제풀이를 찾아보기 이전에
ChatGPT에게 물어보고 싶은 생각이 들었다.
그래서 물어봤다.
🗳️ (ChatGPT가 알려준 리팩토링된) 풀이 코드
function solution(a, b) {
const sumA = Number(`${a}${b}`);
const sumB = Number(`${b}${a}`);
return Math.max(sumA, sumB);
}
리팩토링을 통해 훨씬 가독성이 좋아졌다.
뿐만 아니라 구분을 위한 각 변수 선언으로 인해 비교 대상이 분명해졌다.
더군다나 해당 문제의 풀이를 위해 내장 함수를 사용해야겠다는 생각을 못하고 있었는데,
ChatGPT 덕분에 표준 내장 객체인 Math 개체의 정적 메서드인 .max()
를 사용하면
보다 더 효율적인 문제 해결이 가능하다는 것을 알 수 있었다.
.max()
메서드를 사용하면 두 값 중 큰 값을 반환한다.
이렇게 리팩토링된 덕분에 가독성이 높아지고 코드가 간결해졌다.
Gooooooooooooood.
📎 참고
- ChatGPT
🔸 작성된 본문 내용 중 미흡한 부분이 있을 수 있습니다.
🔸 고칠 부분이나 추가되면 좋을 내용 댓글로 남겨주시면 완성도 높은 글을 만들어가는 데에 큰 힘이 됩니다. ☺️
'프로그래머스 > 코딩문제' 카테고리의 다른 글
[프로그래머스] Lv.0 조건 문자열 (0) | 2023.10.19 |
---|---|
[프로그래머스] Lv.0 홀짝에 따라 다른 값 반환하기 (0) | 2023.10.13 |
[프로그래머스] Lv.0 문자열 섞기 (2) | 2023.10.10 |
[프로그래머스] Day1 할당량 완료하기 (0) | 2023.10.10 |
[프로그래머스] Lv.0 특수문자 출력하기 (0) | 2023.10.09 |