문제
문제 링크 : https://www.acmicpc.net/problem/2164
수도코드 작성
일단 queue를 이용해서 리스트를 하나 만들고
그 리스트들을 for문으로 1~N까지 채워준다.
Queue에 메소드인 poll을 이용해서 맨 앞에 있는 숫자를 지운다.
그리고 다시 맨 앞에 있는 숫자를 지움과 동시에 뒤에 추가해준다.
이것을 for문으로 1개 남을 때 까지 반복한다.
작성한 코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for (int i = 1; i <= N; i++) {
queue.add(i);
}
while(queue.size()>1) {
queue.poll();
queue.add(queue.poll());
}
System.out.println(queue.poll());
}
}
보완할 점 / 헷갈린 점
for문 안에 continue를 안 넣어도 자동으로 밑으로 넘어가는 것을 몰라서 계속 continue를 사용했다.
이번 문제는 그래도 쉽게 풀 수 있었다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2750번 : 수 정렬하기 - JAVA [자바] (0) | 2022.06.16 |
---|---|
[백준] 18258번 : 큐2 - JAVA [자바] (0) | 2022.06.15 |
[백준] 10828번 : 스택 - JAVA [자바] (4) | 2022.06.13 |
[백준] 1037번 : 약수 - JAVA [자바] (0) | 2022.06.09 |
[백준] 1712번 : 손익분기점 - JAVA [자바] (0) | 2022.06.07 |