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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.idea
67 changes: 67 additions & 0 deletions boj/youngsu5582/week1/1260.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Main {
private static final StringBuilder sb = new StringBuilder();

public static void main(final String[] args) throws IOException {
final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(reader.readLine(), " ");

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


final int[][] ary = new int[n + 1][n + 1];
final boolean[] visited = new boolean[n + 1];
final boolean[] visited2 = visited.clone();
for (int i = 0; i < m; i++) {
st = new StringTokenizer(reader.readLine(), " ");
final int x = Integer.parseInt(st.nextToken());
final int y = Integer.parseInt(st.nextToken());
ary[x][y] = 1;
ary[y][x] = 1;
}
dfs(visited, ary, v);
sb.append("\n");
bfs(visited2, ary, v);
System.out.println(sb);

}

public static void dfs(boolean[] visited, int[][] ary, int pos) {
visited[pos] = true;
sb.append(pos)
.append(" ");
for (int i = 1; i < ary[pos].length; i++) {
if (!visited[i] && ary[pos][i] == 1) {
dfs(visited, ary, i);
}
}
}

public static void bfs(boolean[] visited, int[][] ary, int pos) {
Deque<Integer> temp = new ArrayDeque<>();
temp.add(pos);
while (!temp.isEmpty()) {
pos = temp.pollFirst();
if (visited[pos]) {
continue;
}
visited[pos] = true;
sb.append(pos)
.append(" ");
for (int i = 1; i < ary[pos].length; i++) {
if (!visited[i] && ary[pos][i] == 1) {
temp.add(i);
}
}
}
}

}
43 changes: 43 additions & 0 deletions boj/youngsu5582/week1/2606.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
private static boolean[] visited;
private static int[][] ary;
private static int n;
private static int count;

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

n = Integer.valueOf(reader.readLine());
int m = Integer.parseInt(reader.readLine());

ary = new int[n + 1][n + 1];

for (int i = 0; i < m; i++) {
StringTokenizer st = new StringTokenizer(reader.readLine(), " ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
ary[x][y] = 1;
ary[y][x] = 1;
}

visited = new boolean[n + 1];
dfs(1);
System.out.println(count-1);
}

public static void dfs(int pos) {
visited[pos] = true;
count++;
for (int i = 1; i <= n; i++) {
if(!visited[i] && ary[pos][i]==1) {
dfs(i);
}
}
}

}
30 changes: 30 additions & 0 deletions boj/youngsu5582/week1/2839.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
private static final StringBuilder sb = new StringBuilder();

public static void main(final String[] args) throws IOException {
final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
final int n = Integer.parseInt(reader.readLine());

int result = Integer.MAX_VALUE;

for(int i = 0; i*5 <=n; i++) {
for(int j = 0; i*5 + j*3 <=n; j++) {
if(i*5 + j*3 == n){
result = Math.min(result,i+j);
}
}
}

if(result==Integer.MAX_VALUE){
sb.append(-1);
}else{
sb.append(result);
}

System.out.println(sb);
}
}
64 changes: 64 additions & 0 deletions boj/youngsu5582/week2/1461.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.Optional;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
private static PriorityQueue<Integer> plus = new PriorityQueue<>(Collections.reverseOrder());
private static PriorityQueue<Integer> minus = new PriorityQueue<>(Collections.reverseOrder());
private static int n;
private static int m;
private static int sum = 0;

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());

st = new StringTokenizer(br.readLine(), " ");
while (st.hasMoreTokens()) {
int number = Integer.parseInt(st.nextToken());
if (number > 0) {
plus.add(number);
} else {
minus.add(number * -1);
}
}

int max = findMax();
add(plus);
add(minus);

System.out.println(sum - max);
}

public static int findMax() {
int plus = Optional.ofNullable(Main.plus.peek())
.orElse(-1);
int minus = Optional.ofNullable(Main.minus.peek())
.orElse(-1);
return plus > minus ? plus : minus;
}

public static void add(PriorityQueue<Integer> pq) {
int count = 0;
int temp = -1;
while (!pq.isEmpty()) {
temp = Math.max(pq.poll(), temp);
count++;
if (count == m) {
count = 0;
sum += temp * 2;
temp = -1;
}
}
if (temp == -1) {
return;
}
sum += temp * 2;
}
}
58 changes: 58 additions & 0 deletions boj/youngsu5582/week2/1890.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
private static int[][] list;
private static BigInteger[][] dp;
private static int n;

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

n = Integer.valueOf(reader.readLine());

list = new int[n][n];
dp = new BigInteger[n][n];

for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(reader.readLine(), " ");
int index = 0;
while (st.hasMoreTokens()) {
list[i][index++] = Integer.valueOf(st.nextToken());
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
dp[i][j] = BigInteger.ZERO;
}
}

dp[0][0] = BigInteger.ONE;

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
execute(i, j);
}
}
System.out.println(dp[n - 1][n - 1]);
}

public static void execute(int x, int y) {
int count = list[x][y];
if (list[x][y] == 0) {
return;
}
int nextX = x + count;
int nextY = y + count;
if (nextY < n) {
dp[x][nextY] = dp[x][y].add(dp[x][nextY]);
}
if (nextX < n) {
dp[nextX][y] = dp[x][y].add(dp[nextX][y]);
}
}
}
Loading