[LeetCode] Remove Digit From Number to Maximize Result

준규·2022년 10월 17일
0

숫자 문자열 number 가 주어지고 문자 digit이 주어질 때 number에서 digit을 하나 뺀 숫자중 가장 큰 값을 리턴하는 문제이다.

Example을 보면

2번 예시와 같이 digit이 1일 때 number 에서 1을 뺄 수 있는 경우는 가장 앞의 1을 뺀 231과 가장 뒤에 있는 1을 뺀 123이 나올 수 있다.

이 때 231 > 123 이므로 231이 정답이다.

const removeDigit = function (number, digit) {
  let max = 0;

  for (let i = 0; i < number.length; i++) {
    if (digit === number[i]) {
      const first = number.slice(0, i);
      const second = number.slice(i + 1, number.length);
      const sum = BigInt(first + second);
      if (max <= sum) {
        max = sum;
      }
    }
  }

  return max + "";
};

number 숫자들을 하나씩 순회하면서 digit과 같은 값이 나올 때마다 digit을 기준으로 앞 뒤로 숫자를 잘라 새로운 숫자로 만들어 주었다.

그 다음 max 값과 비교해 현재 새로 만든 값이 max 보다 크다면 새로운 max 값으로 지정해주었다.

number는 아주 큰 숫자도 나올 수 있으므로 BigInt 형을 사용하였고 마지막에 정답을 리턴할 때는 문자열로 리턴해야하므로 +"" 해주어 문자열로 바꾸어 리턴해주었다.

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글