백준 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);
}
}