티스토리 뷰
문제
정보 왕국의 이웃 나라 외동딸 공주가 숲속의 괴물에게 잡혀갔습니다.
정보 왕국에는 왕자가 N명이 있는데 서로 공주를 구하러 가겠다고 합니다. 정보왕국의 왕은
다음과 같은 방법으로 공주를 구하러 갈 왕자를 결정하기로 했습니다.
왕은 왕자들을 나이 순으로 1번부터 N번까지 차례로 번호를 매긴다. 그리고 1번 왕자부터 N
번 왕자까지 순서대로 시계 방향으로 돌아가며 동그랗게 앉게 한다. 그리고 1번 왕자부터 시
계방향으로 돌아가며 1부터 시작하여 번호를 외치게 한다. 한 왕자가 K(특정숫자)를 외치면 그
왕자는 공주를 구하러 가는데서 제외되고 원 밖으로 나오게 된다. 그리고 다음 왕자부터 다시
1부터 시작하여 번호를 외친다.
이렇게 해서 마지막까지 남은 왕자가 공주를 구하러 갈 수 있다.
예를 들어 총 8명의 왕자가 있고, 3을 외친 왕자가 제외된다고 하자. 처음에는 3번 왕자가 3
을 외쳐 제외된다. 이어 6, 1, 5, 2, 8, 4번 왕자가 차례대로 제외되고 마지막까지 남게 된 7
번 왕자에게 공주를 구하러갑니다.
N과 K가 주어질 때 공주를 구하러 갈 왕자의 번호를 출력하는 프로그램을 작성하시오.
풀이
function solution(n, k) {
let answer;
let queue = Array.from({ length: n }, (v, i) => i + 1);
while (queue.length) {
for (let i = 1; i < k; i++) {
queue.push(queue.shift());
}
queue.shift();
if (queue.length === 1) answer = queue[0];
}
console.log(queue);
return answer;
}
console.log(solution(8, 3));
shift() 를 이용해서 큐의 자료구조를 이용하였습니다.
'알고리즘 > 코딩테스트 공부' 카테고리의 다른 글
7-1 선택정렬 (0) | 2022.03.01 |
---|---|
6-7 교육과정 설계 (큐) (0) | 2021.12.10 |
6-5 쇠막대기 (스택) (0) | 2021.12.10 |
6-4 후위식 연산(postfix)(스택) (0) | 2021.12.10 |
6-3 크레인 인형뽑기(카카오 기출) ( 스택) (0) | 2021.12.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 노개북
- Storybook
- 노마드코더
- 원티드
- 우아한테크코스
- 프론트앤드
- CLASS
- 윤성우 열혈C프로그래밍
- javascript
- TopLayer
- error
- NextApiRequest
- 프리온보딩
- import/order
- C언어
- 위코드
- 초보
- createPortal
- nextjs
- NextRequest
- WSL2
- nodejs
- jest
- React
- 북클럽
- electron
- 스토리 북
- 아차산
- env
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함