[프로그래머스] 롤케이크 자르기 - JS

잡초·2024년 4월 22일
0
post-thumbnail

문제

풀이

function solution(topping) {
  // 각각 왼쪽과 오른쪽의 토핑 개수를 저장할 Map을 생성
  const right = new Map();
  const left = new Map();

  // 각 토핑을 순회하면서 오른쪽 토핑의 개수를 저장
  for (const t of topping) {
    if (right.get(t)) right.set(t, right.get(t) + 1); // 이미 등록된 토핑이면 개수를 1 증가
    else right.set(t, 1); // 등록되지 않은 토핑이면 1로 초기화합니다.
  }

  let result = 0;

  // 각 토핑을 순회하면서 왼쪽 토핑의 개수와 오른쪽 토핑의 개수를 갱신하고,
  // 왼쪽과 오른쪽의 토핑 개수가 같으면 결과값에 추가
  for (const t of topping) {
    if (right.get(t) > 1) right.set(t, right.get(t) - 1); // 오른쪽 토핑 개수를 하나 감소
    else right.delete(t); // 오른쪽 토핑 개수가 1이면 Map에서 해당 토핑을 삭제

    if (left.get(t)) left.set(t, left.get(t) + 1); // 왼쪽 토핑 개수를 증가
    else left.set(t, 1); // 등록되지 않은 토핑이면 1로 초기화

    if (left.size === right.size) result++; // 왼쪽과 오른쪽의 토핑 개수가 같으면 결과값에 추가
  }

  return result;
}
profile
개발자가 되고싶은 잡초

0개의 댓글