Stack 을 사용해서 풀어보려고 했었는데, 한 바퀴 돌고 다시 앞쪽으로 돌아가야하기에 Stack 으로는 무리라고 생각.
플로우를 노트에 적어보니 어떻게 풀어야 할 지 대충 감이 잡혔다.
1,2,3(x),4,5,6(x),7,8,1(x),2,4,5(x) ....
즉, 지우는 거 앞 두 개의 값을 뒤로 넘겨버리면 됨
💪 새롭게 배운 내용
애매하면 Stack, Queue 둘다 고민해보자.
🆘 이해가 어려운 내용
❌ 해결하지 못한 이유
✅ 본인 풀이
🏋️♀️ 시도횟수 : 1회 | ⏱ 걸린시간 : 109ms | 💾 메모리 : 26MB
import java.io.IOException;
import java.util.*;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int answer = solution(n, k);
System.out.println(answer);
}
private static int solution(int n, int k) {
Queue<Integer> queue = new LinkedList<>();
int answer = 0;
for (int i = 1; i <= n; i++) {
queue.offer(i);
}
while (queue.size() != 1) {
for (int i = 1; i < k; i++) {
queue.offer(queue.poll());
}
queue.poll();
}
answer = queue.poll();
return answer;
}
}
📌 문제
⭐️ 아이디어
🤔 고민한 내용
💪 새롭게 배운 내용
🆘 이해가 어려운 내용
❌ 해결하지 못한 이유
✅ 본인 풀이
🏋️♀️
시도횟수
: 1회 | ⏱걸린시간
: 109ms | 💾메모리
: 26MB참고한 자료