본문 바로가기
코테연습

131. 이것이 코딩 테스트다 : 11장 모험가 길드 Javascript

by hxunz 2022. 9. 14.

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최댓값 구하라
  • 주어진 자료는 무엇인가?
     - N명의 모험가들의 공포도가 담긴 배열 
  • 조건은 무엇인가?
     - 몇명의 모험가는 마을에 남아있어도 된다.

2. 계획

  1. 주어진 배열을 오름차순으로 나열한다.
  2. 이 배열을 순회하면서 member+1을 해준다.
  3. 현재 요소보다 member의 수가 많아지면 groups+1을 해주고 member는 다시 초기화한다.
  4. 2,3번을 반복한다.

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (arr) => {
  const numbers = arr.sort((a, b) => a - b);

  let groups = 0;
  let members = 0;
  for (let num of numbers) {
    members++;
    if (members >= num) {
      groups++;
      members = 0
    }
  }

  return groups;
}

test('countGroup', () => {
  expect(solution([2, 3, 1, 2, 2])).toEqual(2)
});

4. 반성

  • while문이나 재귀를 사용해볼 수도 있을 것 같은데 종료 조건을 어떻게 설정해야할지 모르겠다,,

 

댓글