문제
풀이
먼저 큐에
코드
Python
from collections import deque
n = int(input())
queue = deque()
for i in range(1, n+1):
queue.append(i)
while len(queue) > 1:
queue.popleft()
queue.append(queue.popleft())
print(queue.pop())C++
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
queue<int> q;
for (int i = 1; i <= n; i++) {
q.push(i);
}
while (q.size() > 1) {
q.pop();
q.push(q.front());
q.pop();
}
cout << q.front();
return 0;
}Java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= n; i++)
queue.add(i);
while (queue.size() > 1) {
queue.poll();
queue.add(queue.poll());
}
bw.write(queue.peek() + "");
bw.close();
}
}