백준 2908번을 풀어보았다.
let [A, B] = require('fs').readFileSync('/dev/stdin').toString().split(" ")
let A_reversed = 0, B_reversed = 0
for (let i = 2; i >= 0; i--) {
A_reversed += A[i] * (10 ** i)
B_reversed += B[i] * (10 ** i)
}
console.log(A_reversed > B_reversed ? A_reversed : B_reversed)
이 문제는 크게 역순으로 만드는 단계와 출력하는 단계로 구분할 수 있는데, 각 단계별 풀이를 정리해보았다.
역순 만들기 ① 반복문
위와 같이 반복문을 사용해 일의 자리, 십의 자리, 백의 자리를 A_reversed, B_reversed로 옮겨준다.
역순 만들기 ② reverse 메소드
A_reversed = Number(A.split("").reverse().join(''))
B_reversed = Number(B.split("").reverse().join(''))
reverse 메소드를 사용하여 역순으로 만들 수도 있다.
먼저 reverse 메소드는 Array 객체의 메소드로, A, B를 split 메소드를 사용해 배열로 변환해준다.
이후 reverse 메소드를 사용해 배열 내 요소들의 순서를 역순으로 만들고
join 메소드를 사용해 배열을 다시 문자열로 변환해준다.
참고) 백준 10811번
역순 만들기 ③ 인덱스로 문자열 내 문자 접근하기
A_reversed = Number(A[2] + A[1] + A[0])
B_reversed = Number(B[2] + B[1] + B[0])
배열과 유사하게 문자열은 인덱스를 사용해 문자열 내 각 문자에 접근할 수 있다.
인덱스를 사용해 각 자리수를 얻고, 일의 자리와 백의 자리의 순서를 바꿔 concatenate한다.
참고) 반복문 ① 배열
참고) 백준 11720번
출력하기
console.log(Math.max(A_reversed, B_reversed))
Math 객체의 max 메소드를 사용하여 출력할 수도 있다.
💫 이 문제를 통해 배운 것
순서를 바꾸는 유형은 reverse 메소드를 떠올리자!