Skip to content

Commit ff8a550

Browse files
authored
23주차 (#21)
1 parent 63e41ee commit ff8a550

File tree

9 files changed

+350
-39
lines changed

9 files changed

+350
-39
lines changed

src/main/java/org/example/_20week/BufferingTest.java

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.example._23week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.StringTokenizer;
7+
8+
public class AgingPrediction {
9+
10+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
12+
public static void main(String[] args) throws IOException {
13+
StringTokenizer st = new StringTokenizer(br.readLine());
14+
final int N = Integer.parseInt(st.nextToken());
15+
final int Q = Integer.parseInt(st.nextToken());
16+
final int K = Integer.parseInt(st.nextToken());
17+
18+
19+
}
20+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.example._23week;
2+
3+
import java.io.*;
4+
import java.util.StringTokenizer;
5+
6+
public class CumulativeSum {
7+
8+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
10+
11+
public static void main(String[] args) throws IOException {
12+
StringTokenizer st = new StringTokenizer(br.readLine());
13+
final int N = Integer.parseInt(st.nextToken());
14+
final int M = Integer.parseInt(st.nextToken());
15+
16+
// 누적합 만들기가 쉬움.
17+
int[] sumArray = new int[N + 1];
18+
st = new StringTokenizer(br.readLine());
19+
for (int i = 1; i < N + 1; i++) {
20+
sumArray[i] = Integer.parseInt(st.nextToken()) + sumArray[i - 1];
21+
}
22+
23+
for (int i = 0; i < M; i++) {
24+
st = new StringTokenizer(br.readLine());
25+
final int start = Integer.parseInt(st.nextToken());
26+
final int end = Integer.parseInt(st.nextToken());
27+
28+
bw.write((sumArray[end] - sumArray[start - 1]) + "\n");
29+
}
30+
31+
bw.flush();
32+
}
33+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package org.example._23week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.StringTokenizer;
9+
10+
public class GreatTown {
11+
12+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
private static List<Integer>[] graph;
14+
private static boolean[] visited;
15+
private static int[][] dp;
16+
private static int[] towns;
17+
private static final int GREAT = 0;
18+
private static final int NOT_GREAT = 1;
19+
20+
public static void main(String[] args) throws IOException {
21+
final int townCount = Integer.parseInt(br.readLine()) + 1;
22+
23+
dp = new int[townCount][2];
24+
visited = new boolean[townCount];
25+
graph = new ArrayList[townCount];
26+
for (int i = 0; i < townCount; i++) {
27+
graph[i] = new ArrayList<>();
28+
}
29+
30+
towns = new int[townCount];
31+
StringTokenizer st = new StringTokenizer(br.readLine());
32+
for (int i = 1; i < townCount; i++) {
33+
towns[i] = Integer.parseInt(st.nextToken());
34+
}
35+
36+
for (int i = 0; i < townCount - 2; i++) {
37+
st = new StringTokenizer(br.readLine());
38+
final int town1 = Integer.parseInt(st.nextToken());
39+
final int town2 = Integer.parseInt(st.nextToken());
40+
41+
graph[town1].add(town2);
42+
graph[town2].add(town1);
43+
}
44+
45+
dfs(1);
46+
System.out.println(Math.max(dp[1][GREAT], dp[1][NOT_GREAT]));
47+
}
48+
49+
private static void dfs(int vertex) {
50+
dp[vertex][GREAT] = towns[vertex];
51+
dp[vertex][NOT_GREAT] = 0;
52+
visited[vertex] = true;
53+
54+
for (final Integer adjacent : graph[vertex]) {
55+
if (visited[adjacent]) {
56+
continue;
57+
}
58+
59+
dfs(adjacent);
60+
dp[vertex][GREAT] += dp[adjacent][NOT_GREAT];
61+
dp[vertex][NOT_GREAT] += Math.max(dp[adjacent][GREAT], dp[adjacent][NOT_GREAT]);
62+
}
63+
}
64+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.example._23week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.Arrays;
7+
import java.util.StringTokenizer;
8+
9+
public class MoveBreakingTheWall {
10+
11+
private static int ROW_SIZE;
12+
private static int COL_SIZE;
13+
14+
private static int[][] map;
15+
private static boolean[][] visited;
16+
17+
private static final int[] dr = {-1, 0, 1, 0};
18+
private static final int[] dc = {0, 1, 0, -1};
19+
20+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
21+
22+
public static void main(String[] args) throws IOException {
23+
StringTokenizer st = new StringTokenizer(br.readLine());
24+
ROW_SIZE = Integer.parseInt(st.nextToken());
25+
COL_SIZE = Integer.parseInt(st.nextToken());
26+
27+
map = new int[ROW_SIZE][COL_SIZE];
28+
visited = new boolean[ROW_SIZE][COL_SIZE];
29+
for (int i = 0; i < ROW_SIZE; i++) {
30+
map[i] = Arrays.stream(br.readLine().split(""))
31+
.mapToInt(Integer::parseInt)
32+
.toArray();
33+
}
34+
35+
bfs(0,0);
36+
}
37+
38+
private static void bfs(final int startingRow, final int startingCol) {
39+
40+
}
41+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package org.example._23week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.*;
7+
8+
public class NandM8 {
9+
10+
private static int n;
11+
private static int m;
12+
private static int[] numbers;
13+
private static final StringBuilder sb = new StringBuilder();
14+
private static final List<String> answer = new ArrayList<>();
15+
16+
public static void main(String[] args) throws IOException {
17+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
18+
String[] line = br.readLine().split(" ");
19+
n = Integer.parseInt(line[0]);
20+
m = Integer.parseInt(line[1]);
21+
numbers = Arrays.stream(br.readLine().split(" "))
22+
.mapToInt(Integer::parseInt)
23+
.sorted()
24+
.toArray();
25+
26+
dfs(new ArrayList<>(), 0, 0);
27+
28+
for (String element : answer) {
29+
System.out.println(element);
30+
}
31+
System.out.println(answer.size());
32+
}
33+
34+
private static void dfs(
35+
List<Integer> elements,
36+
int count,
37+
int node
38+
) {
39+
if (count == m) {
40+
for (Integer element : elements) {
41+
sb.append(element)
42+
.append(" ");
43+
}
44+
answer.add(sb.toString().trim());
45+
sb.setLength(0);
46+
return;
47+
}
48+
for (int index = node; index < numbers.length; index++) {
49+
elements.add(numbers[index]);
50+
dfs(elements, count + 1, index);
51+
elements.remove(elements.size() - 1);
52+
}
53+
}
54+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package org.example._23week;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.StringTokenizer;
9+
10+
public class Sns {
11+
12+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
private static int[][] dp;
14+
private static List<Integer>[] graph;
15+
private static boolean[] visited;
16+
private static final int EARLY_ADAPTER = 0;
17+
private static final int NOT_EARLY_ADAPTER = 1;
18+
19+
public static void main(String[] args) throws IOException {
20+
final int vertexCount = Integer.parseInt(br.readLine());
21+
22+
visited = new boolean[vertexCount + 1];
23+
dp = new int[vertexCount + 1][2];
24+
graph = new ArrayList[vertexCount + 1];
25+
for (int i = 1; i < vertexCount + 1; i++) {
26+
graph[i] = new ArrayList<>();
27+
}
28+
29+
for (int i = 0; i < vertexCount - 1; i++) {
30+
final StringTokenizer st = new StringTokenizer(br.readLine());
31+
final int vertex1 = Integer.parseInt(st.nextToken());
32+
final int vertex2 = Integer.parseInt(st.nextToken());
33+
34+
graph[vertex1].add(vertex2);
35+
graph[vertex2].add(vertex1);
36+
}
37+
38+
dfs(1);
39+
System.out.println(Math.min(dp[1][EARLY_ADAPTER], dp[1][NOT_EARLY_ADAPTER]));
40+
}
41+
42+
public static void dfs(int vertex) {
43+
visited[vertex] = true;
44+
dp[vertex][EARLY_ADAPTER] = 1;
45+
dp[vertex][NOT_EARLY_ADAPTER] = 0;
46+
47+
for (final Integer child : graph[vertex]) {
48+
if (visited[child]) {
49+
continue;
50+
}
51+
52+
dfs(child);
53+
dp[vertex][EARLY_ADAPTER] += Math.min(dp[child][EARLY_ADAPTER], dp[child][NOT_EARLY_ADAPTER]);
54+
dp[vertex][NOT_EARLY_ADAPTER] += dp[child][EARLY_ADAPTER];
55+
}
56+
}
57+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.example._23week;
2+
3+
import java.io.*;
4+
import java.util.StringTokenizer;
5+
6+
public class TimeOverlap {
7+
8+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
10+
public static final int TIME_LIMIT = 1_000_001;
11+
12+
public static void main(String[] args) throws IOException {
13+
final int N = Integer.parseInt(br.readLine());
14+
final int[] starts = new int[TIME_LIMIT];
15+
final int[] ends = new int[TIME_LIMIT];
16+
StringTokenizer st;
17+
18+
for (int i = 0; i < N; i++) {
19+
st = new StringTokenizer(br.readLine());
20+
final int start = Integer.parseInt(st.nextToken());
21+
final int end = Integer.parseInt(st.nextToken());
22+
23+
starts[start]++;
24+
ends[end]++;
25+
}
26+
27+
// init sum_starts, sum_ends
28+
for (int i = 1; i < TIME_LIMIT; i++) {
29+
starts[i] += starts[i - 1];
30+
ends[i] += ends[i - 1];
31+
}
32+
33+
final int Q = Integer.parseInt(br.readLine());
34+
st = new StringTokenizer(br.readLine());
35+
for (int i = 0; i < Q; i++) {
36+
final int questionTime = Integer.parseInt(st.nextToken());
37+
final int enterPeopleCount = starts[questionTime];
38+
final int exitPeopleCount = questionTime <= 1 ? 0 : ends[questionTime - 1];
39+
bw.write((enterPeopleCount - exitPeopleCount) + "\n");
40+
}
41+
bw.flush();
42+
}
43+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.example._23week;
2+
3+
import java.io.*;
4+
import java.util.StringTokenizer;
5+
6+
public class TimeOverlap2 {
7+
8+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
10+
public static final int TIME_LIMIT = 1_000_002;
11+
12+
public static void main(String[] args) throws IOException {
13+
final int N = Integer.parseInt(br.readLine());
14+
final int[] sums = new int[TIME_LIMIT];
15+
StringTokenizer st;
16+
17+
for (int i = 0; i < N; i++) {
18+
st = new StringTokenizer(br.readLine());
19+
final int start = Integer.parseInt(st.nextToken());
20+
final int end = Integer.parseInt(st.nextToken());
21+
22+
sums[start]++;
23+
sums[end + 1]--;
24+
}
25+
26+
for (int i = 1; i < TIME_LIMIT; i++) {
27+
sums[i] += sums[i - 1];
28+
}
29+
30+
final int Q = Integer.parseInt(br.readLine());
31+
st = new StringTokenizer(br.readLine());
32+
for (int i = 0; i < Q; i++) {
33+
final int questionTime = Integer.parseInt(st.nextToken());
34+
bw.write(sums[questionTime] + "\n");
35+
}
36+
bw.flush();
37+
}
38+
}

0 commit comments

Comments
 (0)