Skip to content

Commit aea2f2c

Browse files
authored
Merge pull request #49 from Jewan1120/main
[4์ฃผ์ฐจ] ๋ฐฑ์ œ์™„
2 parents 0f3ec41 + 0da6646 commit aea2f2c

File tree

7 files changed

+303
-0
lines changed

7 files changed

+303
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.util.Arrays;
2+
3+
public class Main {
4+
5+
static int n, m, l;
6+
static int[] arr;
7+
8+
public static void main(String[] args) throws Exception {
9+
n = read();
10+
m = read();
11+
l = read();
12+
arr = new int[n + 1]; // ์ฃผ์œ ์†Œ์˜ ์œ„์น˜๋ฅผ ์ž…๋ ฅ ๋ฐ›์„ ๋ณ€์ˆ˜
13+
for (int i = 0; i < n; i++)
14+
arr[i] = read();
15+
arr[n] = l; // ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ ์†๋„๋กœ์˜ ๋ ์ž…๋ ฅ
16+
Arrays.sort(arr); // ์ด๋ถ„ ํƒ์ƒ‰์„ ์œ„ํ•œ ์ •๋ ฌ
17+
int left = 1, right = l;
18+
// ์ด๋ถ„ ํƒ์ƒ‰
19+
while (left <= right) {
20+
int mid = (left + right) / 2;
21+
// ํ•ด๋‹น ๊ฐ’์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค๋ฉด ์ตœ์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฒ”์œ„๋ฅผ ์ค„์—ฌ์คŒ
22+
if (isPossible(mid)) {
23+
right = mid - 1;
24+
} else
25+
left = mid + 1;
26+
}
27+
// ํœด๊ฒŒ์†Œ๊ฐ€ ์—†๋Š” ๊ตฌ๊ฐ„์˜ ๊ธธ์ด์˜ ์ตœ๋Œ“๊ฐ’๋“ค ์ค‘ ์ตœ์†Ÿ๊ฐ’ ๋ฐ˜ํ™˜
28+
System.out.println(left);
29+
}
30+
31+
// ํ•ด๋‹น ๊ฐ’์œผ๋กœ ์ฃผ์œ ์†Œ๋ฅผ ์ง€์—ˆ์„ ๋•Œ m๊ฐœ ์ดํ•˜๋กœ ์ง€์„ ์ˆ˜ ์žˆ๋Š”์ง€
32+
private static boolean isPossible(int target) {
33+
int cnt = 0;
34+
int cur = 0; // ํ˜„์žฌ ์œ„์น˜, ์ดˆ๊ธฐ๊ฐ’์€ ์‹œ์ž‘ ์ง€์ ์ธ 0
35+
for (int i = 0; i < n; i++) {
36+
cnt += (arr[i] - cur - 1) / target; // ํ˜„์žฌ ์œ„์น˜์—์„œ ๋‹ค์Œ ์œ„์น˜๊นŒ์ง€ ๊ฐˆ ๋•Œ ํ•„์š”ํ•œ ํœด๊ฒŒ์†Œ์˜ ๊ฐœ์ˆ˜
37+
cur = arr[i]; // ํ˜„์žฌ ์œ„์น˜ ๊ฐฑ์‹ 
38+
}
39+
return cnt <= m;
40+
}
41+
42+
private static int read() throws Exception {
43+
int c, n = System.in.read() & 15;
44+
while ((c = System.in.read()) >= 48)
45+
n = (n << 3) + (n << 1) + (c & 15);
46+
if (c == 13)
47+
System.in.read();
48+
return n;
49+
}
50+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import java.io.BufferedReader;
2+
import java.io.InputStreamReader;
3+
import java.util.ArrayList;
4+
import java.util.PriorityQueue;
5+
import java.util.StringTokenizer;
6+
7+
public class Main {
8+
9+
// ๋ณ„๊ณผ ๋ณ„ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•  ๊ฐ์ฒด
10+
static class Edge {
11+
int to;
12+
double distance;
13+
14+
Edge(int to, double distance) {
15+
this.to = to;
16+
this.distance = distance;
17+
}
18+
}
19+
20+
public static void main(String[] args) throws Exception {
21+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
22+
int n = Integer.parseInt(br.readLine());
23+
double[][] stars = new double[n][2];
24+
for (int i = 0; i < n; i++) {
25+
StringTokenizer st = new StringTokenizer(br.readLine());
26+
stars[i][0] = Double.parseDouble(st.nextToken());
27+
stars[i][1] = Double.parseDouble(st.nextToken());
28+
}
29+
// ๋ณ„๋“ค์˜ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ
30+
ArrayList<ArrayList<Edge>> graph = new ArrayList<>();
31+
for (int i = 0; i < n; i++)
32+
graph.add(new ArrayList<>());
33+
// ๋ชจ๋“  ๋ณ„๋“ค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ
34+
for (int i = 0; i < n - 1; i++)
35+
for (int j = i + 1; j < n; j++) {
36+
double distance = calDistance(stars[i], stars[j]);
37+
graph.get(i).add(new Edge(j, distance));
38+
graph.get(j).add(new Edge(i, distance));
39+
}
40+
// mst๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•  ๋ฐฐ์—ด
41+
boolean[] visited = new boolean[n];
42+
// ๊ฐ„์„ ๋“ค์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
43+
PriorityQueue<Edge> pq = new PriorityQueue<>((o1, o2) -> Double.compare(o1.distance, o2.distance));
44+
pq.offer(new Edge(0, 0)); // ์‹œ์ž‘ ์ (์•„๋ฌด ๊ณณ์ด๋‚˜ ์„ค์ •)
45+
double mstDistance = 0; // ๋ชจ๋“  ์ ์„ ์ตœ์†Œ๋กœ ์ด์—ˆ์„ ๋•Œ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ
46+
// Prim algorithm
47+
while (!pq.isEmpty()) {
48+
Edge cur = pq.poll();
49+
int u = cur.to;
50+
// ๋ฐฉ๋ฌธํ•œ ๋ฐฐ์—ด์€ ์Šคํ‚ต
51+
if (visited[u])
52+
continue;
53+
visited[u] = true;
54+
mstDistance += cur.distance; // ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์— ๋”ํ•ด์คŒ
55+
for (Edge next : graph.get(u)) {
56+
int v = next.to; // ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•  ๋ณ„
57+
// ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด
58+
if (!visited[v])
59+
pq.offer(next); // ํ์— ์‚ฝ์ž…
60+
}
61+
}
62+
System.out.println(mstDistance);
63+
}
64+
65+
// ๋ณ„๊ณผ ๋ณ„ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ
66+
private static double calDistance(double[] A, double[] B) {
67+
return Math.sqrt(Math.pow(B[0] - A[0], 2) + Math.pow(B[1] - A[1], 2));
68+
}
69+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
public class Main {
2+
public static void main(String[] args) throws Exception {
3+
int n = read();
4+
int[] arr = new int[n];
5+
for (int i = 0; i < n; i++)
6+
arr[i] = read();
7+
int[] lis = new int[n + 1]; // ์ตœ์žฅ (์—ฐ์†) ์ฆ๊ฐ€ ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด
8+
int len = 0; // ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜
9+
for (int i = 0; i < n; i++) {
10+
int idx = arr[i];
11+
lis[idx] = lis[idx - 1] + 1; // ์ž์‹ ๋ณด๋‹ค ํ•˜๋‚˜ ์ž‘์€ ๊ฐ’์ด ๊ฐ€์ง„ LIS ๊ธธ์ด +1
12+
len = Math.max(len, lis[i]); // ์ตœ๋Œ€ ๊ธธ์ด ๊ฐฑ์‹ 
13+
}
14+
System.out.println(n - len);
15+
}
16+
17+
// ๋น ๋ฅธ ์ž…๋ ฅ ํ•จ์ˆ˜
18+
private static int read() throws Exception {
19+
int c, n = System.in.read() & 15;
20+
while ((c = System.in.read()) >= 48)
21+
n = (n << 3) + (n << 1) + (c & 15);
22+
if (c == 13)
23+
System.in.read();
24+
return n;
25+
}
26+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import java.io.BufferedReader;
2+
import java.io.InputStreamReader;
3+
import java.util.ArrayDeque;
4+
import java.util.ArrayList;
5+
import java.util.Deque;
6+
import java.util.StringTokenizer;
7+
8+
public class Main {
9+
10+
static int n, l, r;
11+
static int[][] toast; // ๊ณ„๋ž€์˜ ์–‘์„ ์ €์žฅํ•  ๋ฐฐ์—ด
12+
static boolean[][] visited; // ๋ถ„๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ง€๋ฅผ ํ™•์ธํ•  ๋ฐฐ์—ด
13+
14+
static int[] dy = { 1, 0, -1, 0 };
15+
static int[] dx = { 0, 1, 0, -1 };
16+
17+
public static void main(String[] args) throws Exception {
18+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
19+
StringTokenizer st = new StringTokenizer(br.readLine());
20+
n = Integer.parseInt(st.nextToken());
21+
l = Integer.parseInt(st.nextToken());
22+
r = Integer.parseInt(st.nextToken());
23+
toast = new int[n][n];
24+
for (int i = 0; i < n; i++) {
25+
st = new StringTokenizer(br.readLine());
26+
for (int j = 0; j < n; j++)
27+
toast[i][j] = Integer.parseInt(st.nextToken());
28+
}
29+
int time = 0; // ๊ณ„๋ž€์˜ ์ด๋™ ์‹œ๊ฐ„
30+
while (separate()) { // ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ๊ฐ€?
31+
time++; // ๋ถ„๋ฆฌ ํ–ˆ๋‹ค๋ฉด ๊ณ„๋ž€์˜ ์ด๋™ ์‹œ๊ฐ„ ์ฆ๊ฐ€
32+
}
33+
System.out.println(time);
34+
}
35+
36+
// ์ˆœ์ฐจ์ ์œผ๋กœ ๊ณ„๋ž€ํ‹€์ด ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
37+
private static boolean separate() {
38+
visited = new boolean[n][n];
39+
boolean flg = false; // ๋ถ„๋ฆฌ๊ฐ€ ๋๋Š” ์ง€๋ฅผ ์•Œ๋ ค์ค„ ๊ฒ€์ถœ Flag
40+
for (int i = 0; i < n; i++)
41+
for (int j = 0; j < n; j++) {
42+
if (visited[i][j]) // ์ด๋ฏธ ๋ถ„๋ฆฌํ•œ(๋ฐฉ๋ฌธํ•œ) ๊ณ„๋ž€ ํ‹€์€ ์Šคํ‚ต
43+
continue;
44+
// ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆœํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง„ํ–‰ ๋ฐฉํ–ฅ์ธ ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ๋งŒ ํ™•์ธ
45+
for (int k = 0; k < 2; k++) {
46+
int ni = i + dy[k];
47+
int nj = j + dx[k];
48+
// ๋‹ค์Œ ์ขŒํ‘œ์™€ ํ•ฉ์น  ์ˆ˜ ์žˆ๋Š” ์ง€
49+
if (isPossible(i, j, ni, nj)) {
50+
flg = true; // ํ•ฉ์น  ์ˆ˜ ์žˆ์—ˆ์Œ
51+
distribute(ni, nj); // BFS๋ฅผ ์ด์šฉํ•ด์„œ ํ•ฉ์น  ์ˆ˜ ์žˆ๋Š” ๊ณ„๋ž€๋“ค ํ•ฉ์น˜๊ธฐ
52+
}
53+
}
54+
}
55+
return flg; // ๊ฒ€์ถœ Flag ๋ฐ˜ํ™˜
56+
}
57+
58+
// ๊ณ„๋ž€ํ‹€์ด ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ณ„๋ž€ ํ•ฉ์น˜๊ธฐ
59+
// BFS ์ด์šฉ
60+
private static void distribute(int sy, int sx) {
61+
int cnt = 0, sum = 0;
62+
// BFS
63+
Deque<int[]> dq = new ArrayDeque<>();
64+
ArrayList<int[]> info = new ArrayList<>(); // BFS๋ฅผ ์ง„ํ–‰ํ•œ ์ขŒํ‘œ๋“ค ์ €์žฅ
65+
dq.offer(new int[] { sy, sx });
66+
visited[sy][sx] = true;
67+
while (!dq.isEmpty()) {
68+
int[] cur = dq.poll();
69+
int y = cur[0], x = cur[1];
70+
// ์ •๋ณด ์ €์žฅ
71+
cnt++;
72+
sum += toast[y][x];
73+
info.add(new int[] { y, x });
74+
75+
for (int i = 0; i < 4; i++) {
76+
int ny = cur[0] + dy[i];
77+
int nx = cur[1] + dx[i];
78+
// ๋‹ค์Œ ์ขŒํ‘œ๋„ ํ•ฉ์น  ์ˆ˜ ์žˆ๋Š” ์ง€
79+
if (isPossible(y, x, ny, nx)) {
80+
visited[ny][nx] = true; // ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ
81+
dq.offer(new int[] { ny, nx });
82+
}
83+
}
84+
}
85+
int avg = sum / cnt;
86+
// ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ขŒํ‘œ๋“ค ๊ฐ’ ์žฌํ• ๋‹น
87+
for (int i = 0; i < info.size(); i++) {
88+
int y = info.get(i)[0], x = info.get(i)[1];
89+
toast[y][x] = avg;
90+
}
91+
}
92+
93+
// ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
94+
private static boolean isPossible(int y, int x, int ny, int nx) {
95+
// ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋˜ ์ขŒํ‘œ๋“ค ์ค‘
96+
if (isValid(ny, nx) && !visited[ny][nx]) {
97+
// ์ฐจ์ด๊ฐ€ l์ด์ƒ r์ดํ•˜
98+
int diff = Math.abs(toast[y][x] - toast[ny][nx]);
99+
return l <= diff && diff <= r;
100+
}
101+
return false;
102+
}
103+
104+
// ๊ฒฝ๊ณ„ ์ฒดํฌ
105+
private static boolean isValid(int y, int x) {
106+
return 0 <= y && y < n && 0 <= x && x < n;
107+
}
108+
}

โ€ŽProgrammers/Level2/JW_42885.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import java.util.Arrays;
2+
class Solution {
3+
public int solution(int[] people, int limit) {
4+
int answer = 0;
5+
Arrays.sort(people); // ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์œ„ํ•œ ์ •๋ ฌ
6+
// ๊ทธ๋ฆฌ๋””ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ์ž‘์€ ์‚ฌ๋žŒ + ํฐ ์‚ฌ๋žŒ์„
7+
// ํ•œ ๋ณดํŠธ์— ํƒœ์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ํˆฌ ํฌ์ธํ„ฐ๋กœ ๊ตฌํ˜„
8+
int l = 0, r = people.length - 1;
9+
while (l <= r) {
10+
// ์ž‘์€ ์‚ฌ๋žŒ๋„ ๊ฐ™์ด ํƒœ์šธ ์ˆ˜ ์žˆ๋Š” ์ง€ ํ™•์ธ
11+
if (people[l] + people[r] <= limit) {
12+
l++;
13+
}
14+
r--;
15+
answer++;
16+
}
17+
return answer;
18+
}
19+
}

โ€ŽProgrammers/Level3/JW_42898.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
final int MOD = 1_000_000_007; // ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ
3+
public int solution(int m, int n, int[][] puddles) {
4+
int[][] board = new int[n + 1][m + 1];
5+
// ์›…๋ฉ์ด๊ฐ€ ์žˆ๋Š” ์œ„์น˜ ํ‘œ์‹œ
6+
for (int[] puddle : puddles)
7+
board[puddle[1]][puddle[0]] = -1;
8+
board[0][1] = 1; // ์‹œ์ž‘ ์œ„์น˜์˜ ์œ„ ํ˜น์€ ์™ผ์ชฝ์„ 1๋กœ ์ดˆ๊ธฐํ™”
9+
for (int i = 1; i < n + 1; i++)
10+
for (int j = 1; j < m + 1; j++)
11+
// ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์›…๋ฉ์ด๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด
12+
if (board[i][j] != -1) {
13+
int up = Math.max(0, board[i - 1][j]); // ์œ„์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ
14+
int lf = Math.max(0, board[i][j - 1]); // ์™ผ์ชฝ์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ
15+
board[i][j] = (up + lf) % MOD; // ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ณ„์‚ฐ
16+
}
17+
return board[n][m];
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
SELECT
2+
C.ID,
3+
C.GENOTYPE,
4+
P.GENOTYPE PARENT_GENOTYPE
5+
FROM
6+
ECOLI_DATA C
7+
INNER JOIN ECOLI_DATA P
8+
ON C.PARENT_ID = P.ID
9+
WHERE
10+
C.GENOTYPE & P.GENOTYPE = P.GENOTYPE
11+
ORDER BY
12+
C.ID

0 commit comments

Comments
ย (0)