요세푸스2 백준 1158(요세푸스) c++ 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 풀이 문제를 큐를 이용하여 생각을 해보면, N만큼 오름차순으로 큐에 숫자가 들어가 있다. 그리고 K 번째의 숫자를 제거하는게 문제이다. 그러면 K만큼 큐에서 pop을 함과 동시에 push를 해주면 문제가 해결이 된다. 전체 코드 #include using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int N, K; cin >> N >> K; queue input; for(register int i .. 2023. 4. 21. 백준 11866번 (요세푸스 문제 0) c++ 문제 문제 풀이 1. 큐를 이용한다. 큐는 FIFO(First In First Out)으로 선입선출 즉, 먼저 들어온 얘를 먼저 빼주는 방식이다. 그래서 Enqueue를 하면 맨 뒤에 들어가고 Dequeue를 하면 맨 앞 원소가 나오게 된다. 문제에서 N은 1000개이다. 그래서 그냥 선형 queue를 구현하여 사이즈를 잘못 잡으면 못 맞출 가능성이 있다. 이럴 때는 원형 queue를 쓴다면 메모리를 훨씬 절약하여 풀 수 있다. 선형 queue는 포화 상태가 아니여도 만약 큐의 rear가 배열의 마지막 인덱스와 같다면 포화 상태로 인식하여 더 이상 삽입 할 수 없다. 하지만 원형 queue는 선형 queue와 다르게 만약 큐의 rear가 배열의 마지막 인덱스이면서 포화 상태가 아니라면 rear를 queu.. 2023. 2. 16. 이전 1 다음