백준 1158 조세퍼스 문제

김주현·2019년 12월 28일
0

풀이
offer(poll()) 을 통해 앞의 숫자를 뒤로 입력시키며 큐를 순회하다가 해당 순번이 되면 큐를 poll하여 출력시켜줌.

소스코드
1. while문 이용

	public class Baekjoon1158 {

	static public void main(String args[]) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    Queue<Integer> q = new LinkedList<>();
    Queue<Integer> result = new LinkedList<>();

    int N = Integer.parseInt(st.nextToken());
    int K = Integer.parseInt(st.nextToken());

    for(int i = 1; i<=N; i++)
        q.offer(i);

    System.out.print("<");

    int count = 0;
    while (q.size() != 0) {
        count++;
        if (count == K) {
            if(q.size() == 1)
                System.out.print(q.poll() + ">");

            else
                System.out.print(q.poll() + ", ");
            count = 0;
        }
        else {
            q.offer(q.poll());
        }
    }
	}
	}
    
  1. for문 이용

    public class Baekjoon1158 {
    static public void main(String args[]) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    Queue<Integer> q = new LinkedList<>();
    Queue<Integer> result = new LinkedList<>();
    
    int N = Integer.parseInt(st.nextToken());
    int K = Integer.parseInt(st.nextToken());
    
    for(int i = 1; i<=N; i++)
        q.offer(i);
    
    System.out.print("<");
    
    while(!q.isEmpty()) {
        if (q.size() == 1) {
            System.out.print(q.poll() + ">");
            break;
        }
    
        for (int i = 1; i < K; i++) {
            q.offer(q.peek());
            q.poll();
        }
        System.out.print(q.poll() + ", ");
    }

    }
    }

profile
Hello World

0개의 댓글