반응형
📌강의 정리
큐를 사용하는 문제이다. 처음에 주어진 길이만큼 배열을 만든다.
그 다음 반복을 돌면서 주어진 숫자만큼 앞에서 shift하고 그 숫자를 뒤로 push한다.
이후 주어진 숫자의 반복이 끝나면 한번더 shift 하고 그걸 배열의 길이가 1일때까지 반복하다
길이가 1이 되면 배열의 숫자를 반환한다.
📌느낀점
오랜만에 잘 푼 문제인 것 같다.
디테일이 살짝 아쉽지만 그건 이제부터 조금씩 챙기기로 하고
우선 문제를 풀었다는 점이 뿌듯하다.
Array.from을 머리에 잘 새겨놓자.
//나의코드
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(n, k) {
let answer;
let queue = [];
for (let i = 1; i <= n; i++) queue.push(i);
while (queue.length !== 1) {
for (let j = 0; j < k - 1; j++) {
queue.push(queue.shift());
}
queue.shift();
}
answer = queue[0];
return answer;
}
//처음에 큐를 만들때 순서대로 만들고
//반복문으로 k만큼 숫자를 맨앞에서 뒤로 보낸다.
//이후 숫자하나를 쉬프트하고 다시 앞에서 뒤로 보낸다.
//숫자 하나가 남을때까지 반복하고 그 숫자를 반환한다.
console.log(solution(8, 3));
</script>
</body>
</html>
//강사님 코드
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
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.shift();
}
return answer;
}
console.log(solution(8, 3));
</script>
</body>
</html>
반응형
'JS 알고리즘 문제풀이 > 섹션 6. 자료구조(스택, 큐)' 카테고리의 다른 글
7.교육과정설계(큐) (0) | 2022.06.28 |
---|---|
5.쇠막대기(스택) (0) | 2022.06.26 |
4.후위식 (postfix) 연산(스택) (0) | 2022.06.25 |
3.크레인 인형뽑기(스택):카카오 (0) | 2022.06.24 |
2.괄호 문자 제거(스택) (0) | 2022.06.23 |