Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions 이준희/2학기/1주차/[Baekjoon-10159] 저울.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
static Queue<int[]> list = new ArrayDeque<>();
static int n, m;
static int[][] w;

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;

n = Integer.parseInt(br.readLine());
m = Integer.parseInt(br.readLine());

w = new int[n][n];

for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int big = Integer.parseInt(st.nextToken()) - 1; // 무거운거
int small = Integer.parseInt(st.nextToken()) - 1; // 가벼운거
w[big][small] = 1;
w[small][big] = 2;
}

for (int k = 0; k < n; k++) { // 방향이 있는 플로이드-워셜
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (w[i][k] == 1 && w[k][j] == 1) w[i][j] = 1; // a가 b보다 무겁고 b가 c보다 무거우면 a는 c보다 무겁다
if (w[i][k] == 2 && w[k][j] == 2) w[i][j] = 2;
}
}
}

for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++) { // 위에서 다 이었으므로 0인 것은 서로 무게비교가 안되는 것
if (i != j && w[i][j] == 0) count++;
}
System.out.println(count);
}
}


}
60 changes: 60 additions & 0 deletions 이준희/2학기/1주차/[Baekjoon-1561] 놀이공원.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import java.io.*;
import java.util.*;

public class Main {

public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());

int[] ride = new int[m];
int max_time = 0;

st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; i++) {
ride[i] = Integer.parseInt(st.nextToken());
max_time = Math.max(max_time, ride[i]);
}

if (n <= m) { // 기다리는 아이가 놀이기구 개수보다 작으면 바로 출력
System.out.println(n);
return;
}

long left = 0;
long right = (long) n * max_time;
long t = 0;

while (left <= right) { // 모든 아이가 놀이기구를 다 탈 수 있는 시간 중 최소값 구하기
long mid = (left + right) / 2;
long total = m;
for (int i = 0; i < m; i++) {
total += mid / ride[i];
}
if (total >= n) {
t = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}

long cnt = m;
for (int i = 0; i < m; i++) { // 모든 아이가 놀이기구를 다 타기 직전의 상태 찾기
cnt += (t - 1) / ride[i];
}

for (int i = 0; i < m; i++) { // 놀이기구를 다 탄 시점
if (t % ride[i] == 0) { // 이 때 0이므로 탈 수 있음
cnt++;
if (cnt == n) { // 줄 마지막 아이가 탔으면 출력
System.out.println(i + 1);
break;
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
static Queue<int[]> list = new ArrayDeque<>();
static int n, q;

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();

n = Integer.parseInt(st.nextToken());
q = Integer.parseInt(st.nextToken());

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

st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr); // 비내림차순으로 정렬

sum[0] = arr[0];
for (int i = 1; i < n; i++) { // 구간합 구해놓기
sum[i] = sum[i - 1] + arr[i];
}

for (int i = 0; i < q; i++) { // 입력에 따라 출력하기
st = new StringTokenizer(br.readLine());
int from = Integer.parseInt(st.nextToken()) - 1;
int to = Integer.parseInt(st.nextToken()) - 1;
sb.append(sum[to] - sum[from] + arr[from] + "\n");
}

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


}
69 changes: 69 additions & 0 deletions 이준희/2학기/1주차/[Baekjoon-2239] 스도쿠.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
static int[][] board = new int[9][9]; // 스도쿠판
static boolean[][] row = new boolean[9][10]; // row[a][b] = a번째 줄에 b가 있는지
static boolean[][] col = new boolean[9][10]; // col[a][b] = a번째 칸에 b가 있는지
static boolean[][] box = new boolean[9][10]; // box[a][b] = a번째 박스에 b가 있는지
static List<int[]> blanks = new ArrayList<>(); // 빈칸 위치
static boolean solved = false; // 풀었는지 안풀었는지

public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;

for (int i = 0; i < 9; i++) {
String str = br.readLine();
for (int j = 0; j < 9; j++) {
int num = str.charAt(j) - '0';
board[i][j] = num;
if (num == 0) {
blanks.add(new int[]{i, j});
} else { // 입력하면서 있는지에 대한 처리
row[i][num] = true;
col[j][num] = true;
box[(i / 3) * 3 + (j / 3)][num] = true;
}
}
}

dfs(0);
}

static void dfs(int depth) {
if (depth == blanks.size()) { // 풀었으면 끝
StringBuilder sb = new StringBuilder();
for (int[] line : board) {
for (int num : line) {
sb.append(num);
}
sb.append('\n');
}
System.out.print(sb);
solved = true;
return;
}

int[] pos = blanks.get(depth); // 빈칸마다 탐색
int x = pos[0];
int y = pos[1];
int boxnum = (x / 3) * 3 + (y / 3);

for (int num = 1; num <= 9; num++) { // 중복정답인경우 작은 수 출력이므로 1부터 시작
if (!row[x][num] && !col[y][num] && !box[boxnum][num]) { // 수 검증
row[x][num] = col[y][num] = box[boxnum][num] = true; // 방문 처리
board[x][y] = num; // 입력

dfs(depth + 1);
if (solved) return;

board[x][y] = 0; // 백트래킹
row[x][num] = col[y][num] = box[boxnum][num] = false;
}
}
}
}
38 changes: 38 additions & 0 deletions 이준희/2학기/1주차/[Baekjoon-9935] 문자열 폭발.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;

String str = br.readLine();
String bomb = br.readLine();

StringBuilder sb = new StringBuilder();

int blen = bomb.length();

for (char c : str.toCharArray()) {
sb.append(c);

if (sb.length() >= blen) {
if (sb.substring(sb.length() - blen).equals(bomb)) {
sb.delete(sb.length()-blen,sb.length());
}
}
}


if (sb.length() != 0) {
System.out.println(sb.toString());
} else {
System.out.println("FRULA");
}
}


}