728x90
난이도 : 실버4
풀이일 : 07031
https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int K = scan.nextInt();
scan.close();
// queue 생성 후 1~N 숫자 추가
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i < N+1; i++) {
queue.add(i);
}
// K-1개의 숫자 맨 뒤로 이동 후 맨 앞 요소 출력
System.out.print("<");
for (int j = 0; j < N-1; j++) {
for (int k = 0; k < K-1; k++) {
queue.add(queue.poll());
}
System.out.print(queue.poll()+", ");
}
System.out.print(queue.poll()+">");
}
}
- queue를 구현하여 1~N 숫자를 큐에 삽입
- 출력 형식을 맞추기 위한 < 출력 과정
- 총 N-1 번 동안 아래 과정 반복
- K-1번 동안 큐의 맨 앞 요소를 맨 뒤로 이동
- K 번째 요소 큐에서 제거 및 문제 조건에 맞춰 출력
- 마지막 요소 문제 조건에 맞춰 출력
느낀점
자바로 큐를 처음 구현해보았는데, 익숙해지려면 시간이 조금 필요할 것 같다.
오늘은 실버 문제 풀었으니까 앞으로는 더 재밌는거 공부해서 어려운 문제 풀어야지ㅎㅎㅎ
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 2161 카드1 자바 풀이 (0) | 2023.07.07 |
---|---|
백준 2164 카드2 자바 풀이 (0) | 2023.07.06 |
백준 11047 동전 0 파이썬 풀이 (0) | 2023.05.02 |
백준 1463 1로 만들기 파이썬 풀이 (0) | 2023.05.01 |
백준 1991 트리 순회 파이썬 풀이 (0) | 2023.04.29 |