[백준 11866] 요세푸스 문제 0 JAVA - 원형 Queue 사용

2024. 11. 12. 16:08·코딩테스트/백준

 

 

 

 

 


 

 

 

 

 

 

작성 코드

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int k = sc.nextInt();
        
        Queue<Integer> que = new LinkedList<>();
        
        for (int i = 1; i <= n; i++) {
            que.offer(i);
        }

        StringBuilder sb = new StringBuilder();
        sb.append("<");
        
        while (!que.isEmpty()) {
            for (int i = 1; i < k; i++) {
                que.offer(que.poll());
            }
            sb.append(que.poll());
            
            if (!que.isEmpty()) {
                sb.append(", ");
            }
        }
        sb.append(">");
        
        System.out.println(sb.toString());
    }
}

 

 

 

 

 

 

    StringBuilder sb = new StringBuilder();
    sb.append("<");
StringBuilder
자바에서 문자열을 효율적으로 다루기 위한 클래스
문자열을 자주 변경하거나 수정해야 할 경우, StringBuilder를 사용하는 것이 성능 면에서 유리

 

결과를 담을 StringBuilder 선언 후 "<" 추가

 

 

 

 

    while (!que.isEmpty()) {
        // 큐에서 k-1번만큼 앞의 사람들을 뒤로 보내기
        for (int i = 1; i < k; i++) {
            que.offer(que.poll());
        }

        // k번째 사람을 제거하고 sb에 넣기
        sb.append(que.poll());

        // 큐에 다음 사람이 남아있으면 ", " 추가
        if (!que.isEmpty()) {
            sb.append(", ");
        }
    }

 

큐가 비어있지 않은 동안, while문을 반복한다.입력값이 7 3 일 때 k는 3이므로, for문은 k-1인 2번을 돌게된다.첫번째 값을 꺼내(que.poll()) 맨 뒤에 삽입한다. (que.offer))

 

처음 큐

[1, 2, 3, 4, 5, 6, 7]

 

첫번째 for문 종료 후 큐

[3, 4, 5, 6, 7, 1, 2]

 

이런 모습이 된다.

 

그 후 스트링버퍼에 큐의 첫번째 값을 꺼내 삽입한다.

큐 내에 숫자가 남아 있다면 ", " 삽입

 

큐가 빌 때까지 반복 후 종료.

 

 

 

 

    sb.append(">");

    System.out.println(sb.toString());

 

while문이 종료되면 ">" 추가 후 결과 출력

 

 

 

 

 

채점 결과

 

'코딩테스트 > 백준' 카테고리의 다른 글

[백준 1100] 하얀 칸 JAVA  (0) 2024.11.27
[백준 1008] A/B JAVA - BigDecimal 사용  (0) 2024.11.18
[백준 10988] 팰린드롬인지 확인하기  (0) 2024.11.11
[백준 1157] 단어 공부 JAVA - LinkedHashSet, HashMap 사용  (0) 2024.11.09
[백준 1316] 그룹 단어 체커 JAVA - 데크(Deque) 사용  (0) 2024.11.08
'코딩테스트/백준' 카테고리의 다른 글
  • [백준 1100] 하얀 칸 JAVA
  • [백준 1008] A/B JAVA - BigDecimal 사용
  • [백준 10988] 팰린드롬인지 확인하기
  • [백준 1157] 단어 공부 JAVA - LinkedHashSet, HashMap 사용
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (81) N
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (17)
        • Spring (6)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (6) N
        • 정보처리기사 (1)
        • AICE (5) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    AICE Associate
    Associate
    Apache
    SpringBoot
    AICE
    클라우드
    톰캣
    AI
    cloud DB
    tomcat
    Spring
    react
    티스토리챌린지
    docker배포
    docker
    클라우드 배포
    웹스퀘어
    db
    머신러닝
    백준
    websquare
    자바
    MySQL
    dockerspring
    리액트
    Java
    EC2
    오블완
    백준자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
[백준 11866] 요세푸스 문제 0 JAVA - 원형 Queue 사용
상단으로

티스토리툴바