[TIL] 24.10.11 FRI

GDORI·2024년 10월 11일
0

TIL

목록 보기
68/79
post-thumbnail

오늘 푼 알고리즘 코드카타

42746. 가장 큰 수

풀이

해당 문제는 정렬 문제로 비교할 두 숫자를 문자열로 변환하여 AB BA 로 비교하여 큰 값을 내림차순 정렬하여 join 해주면 되는 문제이다.
다만, 모든 넘버가 0이 들어왔을 때 0000 이런식으로 나가면 안되니까 0으로 이루어진 경우 0만 리턴하게 하면 된다.

JS 코드

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 관련하여 기본 틀만 작성하고자 한다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글