두 수의 연산값 계산하기
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
- 1 ≤ a, b < 10,000
function solution(a, b) {
let num1 = Number(`${a}`+`${b}`);
let num2 = 2 * (`${a*b}`);
return num1 >= num2 ? num1 : num2;
}
// 다른 사람들의 풀이
function solution(a, b) {
return Math.max( +(a.toString()+b.toString()),2*a*b)
}
템플릿 문자열을 잘 사용하느냐가 관건이었던 문제였다
<다른 사람의 풀이>
1) 정수 a, b를 문자로 바꾼 다음 연결한다.
2) +기호를 붙여 숫자로 변환한다.
3) Math.max()를 사용하여 답을 구한다.
배열 비교하기
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
- 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
- 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.
- 1 ≤ arr1의 길이 ≤ 100
- 1 ≤ arr2의 길이 ≤ 100
- 1 ≤ arr1의 원소 ≤ 100
- 1 ≤ arr2의 원소 ≤ 100
- 문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.
function solution(arr1, arr2) {
let sum1 = 0;
let sum2 = 0;
let result = 0;
for (let i = 0; i < arr1.length; i++) {
sum1 += arr1[i];
}
for (let i = 0; i < arr2.length; i++) {
sum2 += arr2[i];
}
result = arr1.length > arr2.length ? 1 : -1;
if (arr1.length === arr2.length) {
result = sum1 > sum2 ? 1 : -1;
if (sum1 === sum2) result = 0;
}
return result;
}
풀면서도, "정말 지저분하게 푸네.." 라고 말하며 식을 작성해나갔다..
다른 사람들의 풀이도 다 지저분하네...? 어? 기분이 좋다고 해야 하나. 뭐라고 해야 하나 명명하기 어렵구만.
'코딩테스트 > 프로그래머스 0단계 - 기초 트레이닝' 카테고리의 다른 글
프로그래머스 0단계 - 수 조작하기 1 / 첫 번째 나오는 음수 (0) | 2024.04.07 |
---|---|
프로그래머스 0단계 - 문자열 정수의 합 / 5명씩 (0) | 2024.04.05 |
프로그래머스 0단계 - 문자열 곱하기 / 카운트 업 (0) | 2024.04.04 |
프로그래머스 0단계 - 카운트 다운 / 홀수 vs 짝수 (0) | 2024.04.03 |
프로그래머스 0단계 - 배열 만들기 1 / n개 간격의 원소들 (0) | 2024.04.02 |
댓글