관리 메뉴

100세까지 코딩

[do it 알고리즘] 백준 2164 (큐) 본문

코딩테스트/자바

[do it 알고리즘] 백준 2164 (큐)

100세까지 코딩 2023. 9. 29. 15:26
문제 설명

 

풀기 전 생각
  • 앞 부분은 출력, 뒷 부분은 입력이 이루어지고 있기 때문에 큐 자료구조 사용
  • 큐에 1부터 입력받은 숫자만큼 입력
  • 문제처럼 제일 위에 있는 것 지우고 그 다음, 제일 위에 있는 것을 빼서 다시 입력
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Baek2164 {
    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);
        }
        for(int i = N; i > 1; i--){
            q.remove();
            q.add(q.remove());
        }
        System.out.println(q.remove());
    }
}
오류 및 개선
  • 오류는 없었지만 강의를 보니 큐 사이즈를 알려주는 함수를 사용하여 가독성 높임
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Baek2164 {
    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(q.size() > 1){
            q.remove();
            q.add(q.remove());
        }
        System.out.println(q.remove());
    }
}
참고
 

[자바 공부] 컬렉션(4) Stack & Queue

Stack 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료구조 주요 메서드 empty() 스택이 비어 있는지 검사 peek() 최상위 요소 반환 (제거 X) pop() 최상위 요소 반환 (제거 O) push()

sjd0219.tistory.com