매일 Algorithm

신재원·2023년 4월 9일
0

Algorithm

목록 보기
91/243

백준 2161번 (Silver 5)

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

public class problem291 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        Queue<Integer> q = new LinkedList<>();

        int n = in.nextInt();
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            q.offer(i);
        }

        // q의 size가 0이 아닐때 까지 반복
        while (!(q.size() == 0)) {
            sb.append(q.poll()).append(" ");

            // 탈출조건
            if (q.size() == 0) {
                break;
            }

            // 맨위의 값은 버리고, 그 다음 숫자는 제일 아래로 옮겨서 더한다.
            q.offer(q.poll());
        }

        System.out.print(sb.toString());
    }
}

백준 2167번 (Silver 5)

import java.util.Scanner;

public class problem292 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();

        int[][] arr = new int[n][m];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                arr[i][j] = in.nextInt();
            }
        }
        int k = in.nextInt();

        for (int i = 0; i < k; i++) {
            int a = in.nextInt();
            int b = in.nextInt();
            int c = in.nextInt();
            int d = in.nextInt();

            int result = 0;
            // ~위치에서 ~위치까지 저장되어있는 수열의 누적합
            for (int j = a - 1; j < c; j++) {
                for (int p = b - 1; p < d; p++) {
                    result += arr[j][p];
                }
            }
            System.out.println(result);
        }
    }
}

백준 2828번 (Silver 5)

import java.util.Scanner;

public class problem293 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int n = in.nextInt(); // 스크린 크기
        int m = in.nextInt(); // 바구니 크기
        int apple = in.nextInt(); // 사과 갯수

        int left = 1; // 바구니의 왼쪽 좌표
        
        // 바구니의 오른쪽 좌표 (바구니의 크기 끝의 좌표가 오른쪽 좌표)
        int right = m; 
        int total = 0;


        for (int i = 0; i < apple; i++) {
            int temp = in.nextInt();

            // 바구니 안쪽에 떨어진 경우
            if (left <= temp && temp <= right) {
                continue;
            }
            // 바구니 왼쪽에 가깝게 떨어지는 경우
            if (left > temp) {
                total += (left - temp);
                right -= (left - temp);
                left = temp;

            }
            // 바구니 오른쪽에 가깝게 떨어지는 경우
            else {
                total += (temp - right);
                left += (temp - right); // 왼쪽 좌표 갱신
                right = temp;
            }
        }
        System.out.print(total);
    }
}

0개의 댓글