본문 바로가기
Algorithm & SQL/BAEKJOON

백준 JAVA 2164 카드2

by YoonJong 2022. 8. 22.
728x90

 

접근방법

 - 하나는 버리고 하나는 다시 큐에 담는 문제 임을 확인

 - 큐에 1개가 남을 때까지 해당 작업을 반복하고 1개가 남으면 출력

 - n = 1일때를 따로 조건을 만들어 출력

 

 

8/22 큐와 스택을 다시 공부하면서 재풀이 했다.

조금 더 원활하게 코드를 작성할 수 있었다.

 

package BAEKJOON.Silver.Ⅳ;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class NO2164 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        Queue<Integer> Q = new LinkedList<>();

        int n = sc.nextInt();

        for (int i = 1; i <= n; i++) {
            Q.offer(i);
        }

        while(Q.size() != 1) {
            Q.poll();
            int num = Q.poll();
            Q.offer(num);
        }
        System.out.println(Q.poll());
    }
}

 

8/22 재풀이 진행

package BAEKJOON.Silver.Ⅳ;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class NO2164_2 {
    public static void main(String[] args) {

        Queue<Integer> q = new LinkedList<>();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        for (int i = 1; i <= n; i++) {
            q.add(i);
        }

        while(true) {
            if(q.size() == 1) {
                System.out.println(q.peek());
                break;
            }
            q.poll();
            int num = q.poll();
            q.add(num);
        }
    }
}
728x90

댓글