100세까지 코딩
[do it 알고리즘] 백준 2164 (큐) 본문
문제 설명
풀기 전 생각
- 앞 부분은 출력, 뒷 부분은 입력이 이루어지고 있기 때문에 큐 자료구조 사용
- 큐에 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());
}
}
참고
'코딩테스트 > 자바' 카테고리의 다른 글
[do it 알고리즘] 백준 2750 (버블 정렬) (0) | 2023.10.05 |
---|---|
[do it 알고리즘] 백준 11286 (우선순위 큐) (0) | 2023.09.30 |
[do it 알고리즘] 백준 1874 (스택) (0) | 2023.09.28 |
[do it 알고리즘] 백준 12891 (슬라이딩 윈도우) (1) | 2023.09.25 |
[do it 알고리즘] 백준 1940 (투 포인터2) (0) | 2023.09.24 |