알고리즘(23.11.12)

Task 1

숫자로 구성 된 배열이 주어지고, 해당 배열 숫자들의 합을 리턴한다.

이 때 배열에서 숫자 요소를 변경할 수 있는데, 만약 요소의 값이 11일 때 11의 첫번째 1과 두번째 1을 더해 1 + 1 = 2 로 변경할 수 있다.

이렇게 변경할 수 있는 요소의 수는 2개까지 가능하며 한 요소에 대한 변경 횟수는 무한하다.


function replaceSumOfDigits(number = 0) {
  return number.toString().split('').reduce((acc, curr) => {
      const result = Number(acc) + Number(curr);

      if (result >= 10) {
        return replaceSumOfDigits(result);
      }

      return result;
  }, 0)
}

function solution(arr) {
    const reverseArr = arr.sort((a, b) => b - a);

    for (let i = 0; i < 2; i += 1) {
        const item = reverseArr[i]

        if (item >= 10) {
            const replaceDigit = replaceSumOfDigits(item);
            reverseArr[i] = replaceDigit;
        }
    }

    return reverseArr.reduce((acc, curr) => acc + curr, 0);
}

Task 2

4명으로 구성된 그룹이 앉을 좌석을 예약하려 한다.

한 그룹은 최소 2명씩 같이 붙어 있어야 한다.

좌석은 A1, B4와 같은 좌석 번호를 갖고 rows는 좌석의 줄 수, seat는 예약된 좌석 문자열이다.

좌석이 ABC | DEFG | HJK 로 구성되어 있을 때 몇 그룹이 앉을 수 있는지 리턴한다.

Last updated