본문 바로가기
알고리즘/JAVA

6. 공주 구하기

by vivi 2021. 9. 23.
import java.util.*;

class Main {
	public int solution(int N, int K) {
		int answer = 0;
		ArrayList<Integer> arr = new ArrayList<>();
		for (int i = 0; i < N; i++)
			arr.add(i + 1);
		int index = 0;
		while (arr.size() > 1) {
			index = (index + K - 1) % arr.size();
			arr.remove(index);
		}
		answer = arr.get(0);
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int N = kb.nextInt();
		int K = kb.nextInt();
		System.out.print(T.solution(N, K));
		kb.close();
	}
}

 

import java.util.*;

class Main {
	public int solution(int N, int K) {
		int answer = 0;
		Queue<Integer> q = new LinkedList<>();
		for (int i = 1; i <= N; i++)
			q.offer(i);
		while (!q.isEmpty()) {
			for (int i = 1; i < K; i++)
				q.offer(q.poll());
			q.poll();
			if (q.size() == 1)
				answer = q.poll();
		}
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int N = kb.nextInt();
		int K = kb.nextInt();
		System.out.print(T.solution(N, K));
		kb.close();
	}
}

Queue를 사용한 방법

 

Queue<Integer> q = new LinkedList<>();
q.offer();
q.poll();
q.peek();
q.size();

'알고리즘 > JAVA' 카테고리의 다른 글

8. 응급실  (0) 2021.09.23
7. 교육과정 설계  (0) 2021.09.23
5. 쇠막대기  (0) 2021.09.23
4. 후위식 연산(postfix)  (0) 2021.09.23
3. 크레인 인형뽑기(카카오)  (0) 2021.09.22

댓글