해당 문제는 정렬 문제로 비교할 두 숫자를 문자열로 변환하여 AB BA 로 비교하여 큰 값을 내림차순 정렬하여 join 해주면 되는 문제이다.
다만, 모든 넘버가 0이 들어왔을 때 0000 이런식으로 나가면 안되니까 0으로 이루어진 경우 0만 리턴하게 하면 된다.
function solution(numbers) {
return num = numbers.sort((a,b)=>{
a = a.toString();
b = b.toString();
return (b+a) - (a+b)
}).join('').replace(/^0+/,'0')
// /^ / 는 정규식을 뜻한다. 0+는 0으로 시작하고 뒤에 여러개 붙어있는 경우를 뜻한다.
}
/**
* 계좌 조회
*
*
* @param {string} uuid uuid(userId)
* @returns {Object} 잔액 결과를 반환하는 객체
*/
export const checkBalanceAccount = (uuid) => {
try {
const balance = getAccount(uuid);
if (balance === undefined) {
throw new Error('Account not found');
}
return { status: 'success', message: 'Successfully checked your account balance', balance };
} catch (err) {
return { status: 'fail', message: err.message };
}
};
클라이언트 측에서 이벤트핸들러 매핑으로 model에 접근하지 않고 account 핸들러만 제공하여 잔액을 얻을 수 있게끔 구현해 놓았다.
// 서버와 클라이언트 골드 잔액 동기화
async function loadGoldBalance() {
try {
const response = await sendEvent(100, {});
const balance = response.balance;
if (!balance === undefined || response.status === 'fail') {
alert('Fail to load Gold Balance');
location.reload();
}
userGold = balance;
} catch (err) {
console.error('Error loading gold balance:', err.message);
alert('Error loading gold balance', err.message);
location.reload();
}
}
sendEvent로 100번에 매핑된 checkBalanceAccount를 호출하는 기능을 구현하였다. 처음에 구현하고 작동을 안해서 await를 지웠다가 다시 쓰니까 된다 ;;; 코드 흐름 상 문제는 없어보이는데 괜히 불쾌하다.
주말에는 stage 관련하여 기본 틀만 작성하고자 한다.