알고리즘
공주 구하기
스파이더웹
2022. 7. 28. 14:21
728x90
반응형
큐를 활용한 문제
마지막의 남은 왕자를 구하는 문제이다
1. 1번~N번까지의 왕자를 큐에 넣어준다
2. 특정숫자를 비교하기위한 변수 count를 선언한다
3. 특정숫자 k가되기 전까지 큐에 있는 왕자를 순서대로 처음왕자를 빼고 처음왕자를 맨 뒤로 보내준다
4. 특정숫자까지 반복하다가 특정숫자와 count변수가 일치하는 경우 해당 왕자를 아예 빼버린다( pop(); )
5. count변수를 초기화해주고 큐의 size가 1이될때까지 반복한다
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
Queue<Integer> q = new LinkedList<>();
for(int i=1; i<=n; i++){ //1번부터 n번까지의 왕자가있어 큐에 넣어준다
q.offer(i);
}
int count =1; //특정숫자와 비교하기위한 변수 count
while(q.size()>1){
q.offer(q.poll());//특정숫자까지는 맨앞에번호는 빠지고 다시 맨뒤에로 간다
count++; // 위에 방법을 큐 특정숫자까지 반복
if(count==k){//특정숫자가되면
q.poll(); // 해당숫자는 제거
count=1; //다시 count 변수는 초기화
}
}
int answer = q.peek();
System.out.println(answer);
}
}
결과 7
728x90
반응형