알고리즘/코딩테스트 문제 정리
[코딩테스트 합격자 되기] queue 활용
고래강이
2025. 1. 10. 21:19

☄️ 문제 접근 및 내 생각
1. 리스트를 만들어서 빼고 더하고 빼고 더하고 하는 와중에 정해진 k값에 빼기를 한 번 더 하게 되면 될 것 같다.
2. 리스트로하게 되면 시간이 더 많이 걸리니깐 deque로 해야한다는 것을 다시 상기함.
소요시간: 30분
🌈 파이썬 코드
from collections import deque
# 문제 15 요세푸스 문제
def solution_15(n, k):
# people = deque([int(x) + 1 for x in range(n)])
people = deque(range(1, n + 1))
count = 1
while len(people) > 1:
if (count == k):
people.popleft()
count = 1
else:
people.append(people.popleft())
count += 1
print(people)
return people.popleft()
- 처음 구한 값인데 여기서 deque를 만드는 방식에서 잘못됬음 그래서 다시 사용법을 깨닳았음
- 책의 답지에서는 while문의 내용이 다르지만 뭐 이것도 나쁘지 않겠지?
🌈 자바스크립트 코드
function solution(n, k) {
const people = Array.from({ length: n }, (_, index) => index + 1);
let count = 1;
while (people.length > 1) {
if (count === k) {
people.shift();
count = 0;
} else {
people.push(people.shift());
}
count++;
}
return people[0];
}