Java Challenge - 8

CYSSSSSSSSS·2024년 4월 17일

자바 챌린지

목록 보기
8/11

Java

Queue

백준 2164

package;

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

public class BOJ2164 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Queue<Integer> queueInt = new LinkedList<Integer>();

        for(int i = 1; i<=n; i++){
            queueInt.add(i);
        }

        while (queueInt.size()!=1){
            queueInt.poll();
            queueInt.add(queueInt.poll());
        }
        System.out.println(queueInt.poll());
    }
}

백준 10845

package;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class BOJ10845 {
    public static void main(String[] args) throws IOException {
        BufferedReader rb = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(rb.readLine());    // 명령어를 받는 개수
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        int lastInt = -1; // 가장 최근에 push된 데이터 즉 큐의 마지막 원소
        String commend;
        Queue<Integer> queueInt = new LinkedList<Integer>();
        for(int i =0; i<n; i++){
            st = new StringTokenizer(rb.readLine());
            commend = st.nextToken();

            if(commend.equals("push")){
                lastInt = Integer.parseInt(st.nextToken()); // queue에 들어갈 숫자
                queueInt.add(lastInt);
            } else if (commend.equals("pop")) {
                if(queueInt.isEmpty()){
                    sb.append(-1).append("\n");
                    continue;
                }
                sb.append(queueInt.poll()).append("\n");
            } else if (commend.equals("size")) {
                sb.append(queueInt.size()).append("\n");
            }else if (commend.equals("empty")){
                if(queueInt.isEmpty()){
                    sb.append(1).append("\n");
                    continue;
                }else{
                    sb.append(0).append("\n");
                    continue;
                }
            } else if(commend.equals("front")){
                if(queueInt.isEmpty()){
                    sb.append(-1).append("\n");
                    continue;
                }
                sb.append(queueInt.peek()).append("\n");
            } else if (commend.equals("back")) {
                if(queueInt.isEmpty()){
                    sb.append(-1).append("\n");
                    continue;
                }
                sb.append(lastInt).append("\n");
            }

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

백준 1158

package;

import com.sun.jdi.connect.spi.TransportService;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class BOJ1158 {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int k = scanner.nextInt();
        StringBuilder sb = new StringBuilder();

        Queue<Integer> queueInt = new LinkedList<Integer>();

        for(int i = 1; i <=n; i++){
            queueInt.add(i);
        }
        sb.append("<");
        int count = 0;
        int number;
        while(!queueInt.isEmpty()){
            if(k - 1 == count){
                count = 0;
                number = queueInt.poll();
                if(!queueInt.isEmpty()){
                    sb.append(number).append(", ");
                }else {
                    sb.append(number);
                }
                continue;
            }
            count += 1;
            queueInt.add(queueInt.poll());
        }
        sb.append(">");
        System.out.println(sb);
    }
}

백준 1966

package;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

public class BOJ1966 {
    public static void main(String[] args) {
        Deque<Integer> deque;
        Deque<Integer> dequeIdx;
        Scanner scanner = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        int t = scanner.nextInt(); // test case
        int n,m;
        int num;
        int count;
        boolean check;

        for(int i = 0; i < t; i++){
            count = 0;
            n = scanner.nextInt();
            m = scanner.nextInt();
            deque = new LinkedList<Integer>();
            dequeIdx = new LinkedList<Integer>();
            for(int j = 0; j < n; j++){
                num = scanner.nextInt();
                deque.add(num);
                dequeIdx.add(j);
            }
            while(true){
                int first = deque.remove(); // 덱의 첫번째 원소
                int first_idx = dequeIdx.remove(); // 덱의 첫번째 인덱스
                check = true;
                for(int item : deque){
                    if(first < item){
                        check = false;
                        deque.add(first);
                        dequeIdx.add(first_idx);
                        break;
                    }
                }
                if(check){
                    count++;
                    if(first_idx == m){
                        sb.append(count).append("\n");
                        break;
                    }else{
                        continue;
                    }
                }else{
                    continue;
                }
            }

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

백준 18258

package;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class BOJ18258 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        String commend;
        Deque<Integer> deque = new LinkedList<Integer>();
        int n = Integer.parseInt(br.readLine());

        for(int i = 0; i < n; i++){
            st = new StringTokenizer(br.readLine());
            commend = st.nextToken();
            if(commend.equals("push")){
                int num = Integer.parseInt(st.nextToken());
                deque.add(num);
            }else if (commend.equals("pop")){
                if(deque.isEmpty()){
                    sb.append(-1).append("\n");
                    continue;
                }
                sb.append(deque.remove()).append("\n");
            }else if(commend.equals("size")){
                sb.append(deque.size()).append("\n");
            }else if (commend.equals("empty")) {
                if(deque.isEmpty()){
                    sb.append(1).append("\n");
                }else{
                    sb.append(0).append("\n");
                }
            }else if(commend.equals("front")){
                if(deque.isEmpty()){
                    sb.append(-1).append("\n");
                    continue;
                }
                sb.append(deque.getFirst()).append("\n");
            }else if(commend.equals("back")){
                if(deque.isEmpty()){
                    sb.append(-1).append("\n");
                    continue;
                }
                sb.append(deque.getLast()).append("\n");
            }
        }
        System.out.println(sb);
    }
}
profile
개발자 되고 싶어요

0개의 댓글