Skip to content

Commit 94bf382

Browse files
author
jiyoung1814
committed
Merge remote-tracking branch 'origin/main' into jiyoung1814/algorithm
2 parents 4d4e840 + 2e4ef30 commit 94bf382

File tree

14 files changed

+500
-0
lines changed

14 files changed

+500
-0
lines changed

ahma0/BOJ_1389.java

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.*;
5+
6+
public class Main {
7+
8+
private static int[][] arr;
9+
private static int min = Integer.MAX_VALUE, ans = -1;
10+
11+
public static void main(String[] args) throws IOException {
12+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
StringTokenizer st = new StringTokenizer(br.readLine());
14+
15+
int N = Integer.parseInt(st.nextToken());
16+
int M = Integer.parseInt(st.nextToken());
17+
18+
arr = new int[N + 1][N + 1];
19+
20+
for (int i = 0; i < M; i++) {
21+
st = new StringTokenizer(br.readLine());
22+
23+
int a = Integer.parseInt(st.nextToken());
24+
int b = Integer.parseInt(st.nextToken());
25+
26+
arr[a][b] = arr[b][a] = 1;
27+
}
28+
29+
for (int i = 1; i <= N; i++) {
30+
bfs(i);
31+
}
32+
33+
System.out.println(ans);
34+
br.close();
35+
}
36+
37+
private static void bfs(int index) {
38+
Queue<Node> q = new LinkedList<>();
39+
boolean[] visited = new boolean[arr.length];
40+
q.add(new Node(index, 0));
41+
visited[index] = true;
42+
43+
int res = 0;
44+
45+
while (!q.isEmpty()) {
46+
Node now = q.poll();
47+
48+
for (int i = 1; i < arr.length; i++) {
49+
if (!visited[i] && arr[now.index][i] == 1) {
50+
q.add(new Node(i, now.count + 1));
51+
visited[i] = true;
52+
res += now.count + 1;
53+
}
54+
}
55+
}
56+
57+
if (res < min) {
58+
min = res;
59+
ans = index;
60+
}
61+
}
62+
63+
static class Node {
64+
int index;
65+
int count;
66+
67+
public Node(int index, int count) {
68+
this.index = index;
69+
this.count = count;
70+
}
71+
}
72+
}

ahma0/BOJ_16395.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
6+
public static void main(String[] args) throws IOException {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
9+
StringTokenizer st = new StringTokenizer(br.readLine());
10+
11+
int n = Integer.parseInt(st.nextToken());
12+
int k = Integer.parseInt(st.nextToken());
13+
14+
int[][] arr = new int[n + 1][n + 1];
15+
arr[1][1] = 1;
16+
for (int i = 2; i <= n; i++) {
17+
for (int j = 1; j <= i; j++) {
18+
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
19+
}
20+
}
21+
22+
bw.write(arr[n][k] + "");
23+
bw.flush();
24+
bw.close();
25+
br.close();
26+
}
27+
28+
}

ahma0/BOJ_28278.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
6+
public static void main(String[] args) throws IOException {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
9+
StringTokenizer st;
10+
int n = Integer.parseInt(br.readLine());
11+
12+
Deque<Integer> stack = new ArrayDeque<>();
13+
14+
for (int i = 0; i < n; i++) {
15+
st = new StringTokenizer(br.readLine());
16+
17+
int t = Integer.parseInt(st.nextToken());
18+
19+
switch (t) {
20+
case 1:
21+
stack.push(Integer.parseInt(st.nextToken()));
22+
break;
23+
case 2:
24+
bw.write((stack.isEmpty() ? -1 : stack.pop()) + "\n");
25+
break;
26+
case 3:
27+
bw.write(stack.size() + "\n");
28+
break;
29+
case 4:
30+
bw.write((stack.isEmpty() ? 1 : 0) + "\n");
31+
break;
32+
case 5:
33+
bw.write((stack.isEmpty() ? -1 : stack.peek()) + "\n");
34+
break;
35+
}
36+
}
37+
38+
bw.flush();
39+
bw.close();
40+
br.close();
41+
}
42+
43+
}

chaeryeon823/BOJ_1012.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// 유기농 배추
2+
// S2
3+
// 그래프, DFS
4+
5+
const readline = require("readline");
6+
7+
const rl = readline.createInterface({
8+
input: process.stdin,
9+
output: process.stdout,
10+
});
11+
12+
const input = [];
13+
rl.on("line", (line) => {
14+
input.push(line.trim());
15+
}).on("close", () => {
16+
let index = 0;
17+
const T = parseInt(input[index++]);
18+
19+
for (let t = 0; t < T; t++) {
20+
const [W, H, K] = input[index++].split(" ").map(Number);
21+
let graph = Array.from({ length: W }, () => Array(H).fill(0));
22+
let visited = Array.from({ length: W }, () => Array(H).fill(0));
23+
let answer = 0;
24+
25+
// 배추 위치 설정
26+
for (let i = 0; i < K; i++) {
27+
const [x, y] = input[index++].split(" ").map(Number);
28+
graph[x][y] = 1;
29+
}
30+
31+
// DFS 수행
32+
const dfs = (nowX, nowY) => {
33+
visited[nowX][nowY] = 1;
34+
const directions = [
35+
[-1, 0],
36+
[1, 0],
37+
[0, -1],
38+
[0, 1],
39+
]; // 상하좌우
40+
41+
for (const [dx, dy] of directions) {
42+
const nextX = nowX + dx;
43+
const nextY = nowY + dy;
44+
45+
if (nextX >= 0 && nextX < W && nextY >= 0 && nextY < H) {
46+
if (graph[nextX][nextY] === 1 && visited[nextX][nextY] === 0) {
47+
dfs(nextX, nextY);
48+
}
49+
}
50+
}
51+
};
52+
53+
// 모든 좌표 순회
54+
for (let x = 0; x < W; x++) {
55+
for (let y = 0; y < H; y++) {
56+
if (graph[x][y] === 1 && !visited[x][y]) {
57+
dfs(x, y);
58+
answer++;
59+
}
60+
}
61+
}
62+
console.log(answer);
63+
}
64+
});

chaeryeon823/BOJ_9623.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// BABBA
2+
// S5
3+
4+
const readline = require("readline");
5+
6+
const rl = readline.createInterface({
7+
input: process.stdin,
8+
output: process.stdout,
9+
});
10+
11+
const cnt = new Array(46).fill(0);
12+
13+
function fn(n) {
14+
if (cnt[n] === 0) {
15+
if (n <= 2) {
16+
cnt[n] = 1;
17+
} else {
18+
cnt[n] = fn(n - 1) + fn(n - 2);
19+
}
20+
}
21+
return cnt[n];
22+
}
23+
24+
rl.question("", (num) => {
25+
num = parseInt(num);
26+
let a = 0;
27+
let b = 0;
28+
29+
if (num === 1) {
30+
a = 0;
31+
b = 1;
32+
} else {
33+
a = fn(num - 1);
34+
b = fn(num);
35+
}
36+
37+
console.log(`${a} ${b}`);
38+
rl.close();
39+
});

chaeryeon823/PGS_138476.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# 귤 고르기
2+
# Lv 2
3+
4+
from collections import Counter
5+
6+
def solution(k, tangerine):
7+
answer = 0
8+
cnt = sorted(Counter(tangerine).values(), reverse=True)
9+
tmp = 0
10+
for c in cnt:
11+
if tmp < k:
12+
tmp += c
13+
answer += 1
14+
else:
15+
break
16+
17+
return answer

hh830/BOJ_11055.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
7+
int N = Integer.parseInt(bufferedReader.readLine());
8+
9+
int dp[] = new int[N];
10+
int arr[] = new int[N];
11+
12+
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
13+
14+
for(int i=0;i<N;i++){
15+
arr[i] = Integer.parseInt(stringTokenizer.nextToken());
16+
dp[i] = arr[i];
17+
}
18+
19+
for (int i=1;i<N;i++) {
20+
for (int j=0;j<i;j++) {
21+
if (arr[i] > arr[j]) {
22+
dp[i] = Math.max(dp[i], dp[j] + arr[i]);
23+
}
24+
}
25+
}
26+
27+
int max = 0;
28+
for (int i=0;i<N;i++) {
29+
if (dp[i] > max) {
30+
max = dp[i];
31+
}
32+
}
33+
34+
System.out.println(max);
35+
}
36+
}

hh830/BOJ_2193.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
7+
int N = Integer.parseInt(bufferedReader.readLine());
8+
9+
long dp[] = new long[N];
10+
11+
dp[0] = 1;
12+
13+
if(N >= 2) {
14+
dp[1] = 1;
15+
}
16+
17+
for (int i = 2; i < N; i++) {
18+
dp[i] = dp[i - 1] + dp[i - 2];
19+
}
20+
21+
System.out.println(dp[N-1]);
22+
}
23+
}

hh830/BOJ_2468.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class BOJ_2468 {
5+
static int n;
6+
static int[][] map;
7+
static boolean[][] visited;
8+
static int[] dx = {-1, 1, 0, 0};
9+
static int[] dy = {0, 0, -1, 1};
10+
11+
public static void main(String[] args) throws IOException {
12+
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
13+
n = Integer.parseInt(bufferedReader.readLine());
14+
map = new int[n][n];
15+
16+
int max = 0;
17+
int result = 0;
18+
19+
for (int i = 0; i < n; i++) {
20+
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
21+
for (int j = 0; j < n; j++) {
22+
map[i][j] = Integer.parseInt(stringTokenizer.nextToken());
23+
max = Math.max(max, map[i][j]);
24+
}
25+
}
26+
27+
for (int h = 0; h <= max; h++) {
28+
visited = new boolean[n][n];
29+
int count = 0;
30+
31+
for (int i = 0; i < n; i++) {
32+
for (int j = 0; j < n; j++) {
33+
if (!visited[i][j] && map[i][j] > h) {
34+
dfs(i, j, h);
35+
count++;
36+
}
37+
}
38+
}
39+
result = Math.max(result, count);
40+
}
41+
42+
System.out.println(result);
43+
}
44+
45+
static void dfs(int x, int y, int height) {
46+
visited[x][y] = true;
47+
48+
for (int i = 0; i < 4; i++) {
49+
int nx = x + dx[i];
50+
int ny = y + dy[i];
51+
52+
if (nx >= 0 && ny >= 0 && nx < n && ny < n) {
53+
if (!visited[nx][ny] && map[nx][ny] > height) {
54+
dfs(nx, ny, height);
55+
}
56+
}
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)