KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (487)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (432)
      • 백준 (187)
      • Programmers (105)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • Level 1
  • tree
  • recursion
  • js
  • codeup
  • 문자열
  • 정렬
  • C
  • 백준
  • programmers
  • 다이나믹 프로그래밍
  • Level 2
  • 제코베 JS 100제
  • 그래프
  • string
  • Level 0
  • C++
  • LeetCode
  • Level1
  • 수학

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

제코베 JS 100제 / 78 / 원형 테이블
PS/제코베 JS 100제

제코베 JS 100제 / 78 / 원형 테이블

2022. 9. 21. 21:08

기린은 중국집에서 친구들과 만나기로 하고, 음식을 시켰습니다.

음식이 나오고 한참을 기다렸지만 만나기로 한 친구 2명이 오지 않았어요.

 

기린은 배가 너무 고파 혼자 음식을 먹기 시작합니다. 원형 테이블에는 N개의 음식들이 있습니다.

한 개의 음식을 다 먹으면 그 음식의 시계방향으로 K 번째 음식을 먹습니다.

하지만 아직 오지 않은 친구들을 위해 2개의 접시를 남겨야 합니다.

 

마지막으로 남는 음식은 어떤 접시인가요?

 

 

 

/**
 * 첫 번째 가져가는 음식이 K 번째 음식이며
 *
 * 나머지는 첫 번째 음식으로부터 시계방향으로 가져간다
 *
 * @param {Number} N 음식의 개수
 * @param {Number} K 먹은 음식 다음으로 K번째 음식을 먹는다
 * @returns {Number[]} 남은 음식들의 번호
 */
function roundTable(N, K) {
  // N의 길이를 가진 배열 0으로 초기화, 생성
  let isFoodRest = Array.from({ length: N }, () => 0);
  // 첫번째 음식이 1번이므로 각 인덱스보다 1만큼 크게 value 초기화
  isFoodRest.forEach((_, idx) => {
    isFoodRest[idx] = idx + 1;
  });

  let idx = K - 1;

  while (isFoodRest.length > 2) {
    idx = idx % isFoodRest.length;
    isFoodRest.splice(idx, 1);
    // idx 번째 value를 삭제했으므로 뒤의 요소들이 인덱스가 하나씩 줄어든다.
    // 따라서 원래 테이블처럼 해당 인덱스에 접근하려면 -1을 해주어야 한다.
    idx += K - 1;
  }

  return isFoodRest;
}

const N = 6;
const K = 3;

const result = roundTable(N, K);
console.log(result);
저작자표시 (새창열림)

'PS > 제코베 JS 100제' 카테고리의 다른 글

제코베 JS 100제 / 80 / 순열과 조합  (1) 2022.09.22
제코베 JS 100제 / 79 / 순회하는 리스트  (1) 2022.09.21
제코베 JS 100제 / 77 / 가장 긴 공통 부분 문자열  (0) 2022.09.21
제코베 JS 100제 / 76 / 안전한 땅  (2) 2022.09.21
    'PS/제코베 JS 100제' 카테고리의 다른 글
    • 제코베 JS 100제 / 80 / 순열과 조합
    • 제코베 JS 100제 / 79 / 순회하는 리스트
    • 제코베 JS 100제 / 77 / 가장 긴 공통 부분 문자열
    • 제코베 JS 100제 / 76 / 안전한 땅
    KimMinJun
    KimMinJun

    티스토리툴바