[JavaSrcipt] Baekjoon - 2908 : 상수 (reverse)
문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
출력
첫째 줄에 상수의 대답을 출력한다.
예제입력 | 예제출력 |
734 893 | 437 |
221 231 | 132 |
839 237 | 938 |
⭕ 풀이
const input=require('fs').readFileSync('/dev/stdin').toString().split(' ');
function sangsoo(num1,num2){
let rev1,rev2;
num1=num1.split('')
num2=num2.split('')
rev1=Number(num1.reverse().join(''));
rev2=Number(num2.reverse().join(''));
if(rev1<rev2){
return rev2;
}else{
return rev1;
}
}
console.log(sangsoo(input[0],input[1]))
함수 상수는 입력값 2개를 num1,num2로 받아
splti '' 으로 숫자를 한개씩 나눈배열을 만든뒤 해당배열을 뒤집어서 join''으로 합친다
이 때 숫자로 인식하지않으므로 Number 등을 사용해 숫자로 변환시켜주고
비교해서 큰값을 return한다.
항상 함수를 자주 쓰지않는것같아서 사용해봤는데 아직 간결하지못해보여 다시 작성해봤다.
⭕ 풀이2
const input=require('fs').readFileSync('/dev/stdin').toString().split(' ');
let arr=input.map(x=>Number(x.split('').reverse().join('')));
console.log(arr[0]>arr[1]?arr[0]:arr[1]);
✅ 다른분의풀이
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(" ");
const [a, b] = input.map(v => [...v].reverse().join(''));
console.log(a > b ? a : b);
// console.log(Math.max(a, b));
간결하게 적었다고 생각했는데
const [a,b]=input.map(v => [...v] ) 를...
input.map(x => [...x])는 해당값을 자릿수마다 쪼개 배열로 만들어준다는 뜻이다.
현재 input값이 " "로 나뉜 [ '734', '893' ] 이므로
x 734를 하나씩 나누어 만든 배열['7','3','4'] 을
reverse로 뒤집어['4','3','7'] join''으로 합쳐준437이 a에 들어가는것이다.
✅ reverse
배열의 순서를 반전하는 메서드.
const array1 = ['one', 'two', 'three'];
console.log('array1:', array1);
// expected output: "array1:" Array ["one", "two", "three"]
const reversed = array1.reverse();
console.log('reversed:', reversed);
// expected output: "reversed:" Array ["three", "two", "one"]
❗ // Careful: reverse is destructive -- it changes the original array.
console.log('array1:', array1);
// expected output: "array1:" Array ["three", "two", "one"]
❗ reverse메서드는 호출한 배열을 반전하고 원본배열을 변형해 그 참조를 반환함.
-출처
https://www.acmicpc.net/problem/2908
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse