Baekjoon - 2164

Tadap·2023년 8월 29일
0

Baekjoon

목록 보기
1/94

문제

Solved.ac Class2+

1차 시도

public class Main {
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());

		ArrayList<Integer> intArray = new ArrayList<>();
		for (int i = 0; i < n; i++) {
			intArray.add(i + 1);
		}

		int calculate = calculate(intArray);
		System.out.println(calculate);

	}

	private static int calculate(ArrayList<Integer> list) {

		list.remove(0);
		if (list.size() == 1) {
			return list.get(0);
		}

		int temp = list.remove(0);
		list.add(temp);

		return calculate(list);

	}
}

시간초과 엔딩

2차시도

public class Main {
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());

		Queue<Integer> intArray = new ArrayDeque<>();
		for (int i = 0; i < n; i++) {
			intArray.add(i + 1);
		}

		int calculate = calculate(intArray);
		System.out.println(calculate);

	}

	private static int calculate(Queue<Integer> list) {

		list.remove();
		if (list.size() == 1) {
			return list.remove();
		}

		int temp = list.remove();
		list.add(temp);

		return calculate(list);

	}

}

시간이 꽤 걸리네? -> 따라서 Queue 구조로 변경했다

NoSuchElementException...?

특정 상황에 Queue가 0이되는 상황이 발생하는것 같다

3차시도

private static int calculate(Queue<Integer> list) {

		if (list.size() == 1) {
			return list.remove();
		}
		list.remove();


		int temp = list.remove();
		list.add(temp);

		return calculate(list);

	}

순서를 바꿨다. 이러면 한번 더 탐색하지만 그정도야 뭐

성공

0개의 댓글