Skip to content

Commit ee67f12

Browse files
author
jiyoung1814
committed
Merge remote-tracking branch 'origin/main' into jiyoung1814/algorithm
2 parents 88cc2b7 + 1de46d2 commit ee67f12

File tree

11 files changed

+359
-0
lines changed

11 files changed

+359
-0
lines changed

ahma0/BOJ_1789.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.math.BigInteger;
5+
6+
public class Main {
7+
8+
public static void main(String[] args) throws IOException {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
11+
BigInteger n = new BigInteger(br.readLine());
12+
BigInteger answer = BigInteger.ZERO;
13+
BigInteger one = BigInteger.ONE;
14+
15+
while (true) {
16+
if (n.compareTo(answer) < 0) {
17+
answer = answer.subtract(one);
18+
break;
19+
}
20+
n = n.subtract(answer);
21+
answer = answer.add(one);
22+
}
23+
24+
System.out.println(answer);
25+
br.close();
26+
}
27+
28+
}

ahma0/BOJ_2583.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
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 N, M, K;
9+
private static int[] dx = {0, 0, 1, -1};
10+
private static int[] dy = {1, -1, 0, 0};
11+
private static boolean[][] visited;
12+
private static int[][] arr;
13+
14+
public static void main(String[] args) throws IOException {
15+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
16+
StringTokenizer st = new StringTokenizer(br.readLine());
17+
18+
M = Integer.parseInt(st.nextToken());
19+
N = Integer.parseInt(st.nextToken());
20+
K = Integer.parseInt(st.nextToken());
21+
22+
arr = new int[M][N];
23+
visited = new boolean[M][N];
24+
25+
for (int i = 0; i < K; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
28+
int x1 = Integer.parseInt(st.nextToken());
29+
int y1 = Integer.parseInt(st.nextToken());
30+
int x2 = Integer.parseInt(st.nextToken());
31+
int y2 = Integer.parseInt(st.nextToken());
32+
33+
for (int y = y1; y < y2; y++) {
34+
for (int x = x1; x < x2; x++) {
35+
arr[y][x] = 1;
36+
}
37+
}
38+
39+
}
40+
41+
List<Integer> answer = new ArrayList<>();
42+
for (int i = 0; i < M; i++) {
43+
for (int j = 0; j < N; j++) {
44+
if (!visited[i][j] && arr[i][j] == 0) {
45+
answer.add(bfs(i, j));
46+
}
47+
}
48+
}
49+
Collections.sort(answer);
50+
51+
System.out.println(answer.size());
52+
for (int i : answer) {
53+
System.out.print(i + " ");
54+
}
55+
br.close();
56+
}
57+
58+
private static int bfs(int x, int y) {
59+
Queue<int[]> queue = new LinkedList<>();
60+
queue.offer(new int[]{x, y});
61+
visited[x][y] = true;
62+
63+
int count = 1;
64+
while (!queue.isEmpty()) {
65+
int[] cur = queue.poll();
66+
67+
for (int i = 0; i < 4; i++) {
68+
int newX = cur[0] + dx[i];
69+
int newY = cur[1] + dy[i];
70+
71+
if (newX < 0 || newY < 0 || newX >= M || newY >= N) {
72+
continue;
73+
}
74+
75+
if (visited[newX][newY] || arr[newX][newY] == 1) {
76+
continue;
77+
}
78+
79+
queue.offer(new int[]{newX, newY});
80+
visited[newX][newY] = true;
81+
count++;
82+
}
83+
}
84+
85+
return count;
86+
}
87+
88+
}

chaeryeon823/BOJ_2606.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// 바이러스
2+
// S3
3+
const fs = require("fs");
4+
const input = fs.readFileSync(0, "utf-8").trim().split("\n");
5+
6+
// 컴퓨터 수 (노드 수)
7+
const N = parseInt(input[0]);
8+
// 연결 수 (간선 수)
9+
const M = parseInt(input[1]);
10+
11+
let answer = 0;
12+
const graph = Array.from({ length: N + 1 }, () => []);
13+
const visited = new Array(N + 1).fill(false);
14+
15+
// 그래프 구성 (2번 줄부터 M+1번 줄까지)
16+
for (let i = 2; i < M + 2; i++) {
17+
const [a, b] = input[i].split(" ").map(Number);
18+
graph[a].push(b);
19+
graph[b].push(a); // 양방향 연결
20+
}
21+
22+
// DFS 함수
23+
function dfs(now) {
24+
visited[now] = true;
25+
answer++;
26+
27+
for (const node of graph[now]) {
28+
if (!visited[node]) {
29+
dfs(node);
30+
}
31+
}
32+
}
33+
34+
// 1번 컴퓨터부터 시작
35+
dfs(1);
36+
37+
// 1번 컴퓨터 제외하고 출력
38+
console.log(answer - 1);

chaeryeon823/PGS_42883.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// 큰 수 만들기
2+
// lv 2
3+
// 그리디
4+
// 스택
5+
6+
function solution(number, k) {
7+
const stack = [];
8+
9+
for (let digit of number) {
10+
while (k > 0 && stack.length && stack[stack.length - 1] < digit) {
11+
stack.pop();
12+
k--;
13+
}
14+
stack.push(digit);
15+
}
16+
17+
return stack.slice(0, stack.length - k).join("");
18+
}

chaeryeon823/PGS_84512.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// 모음 사전
2+
// lv 2
3+
// 완전탐색
4+
// 경우의 수
5+
6+
function solution(word) {
7+
let answer = 0;
8+
let cnt = [781, 156, 31, 6, 1];
9+
let arr = ["A", "E", "I", "O", "U"];
10+
for (let i = 0; i < word.length; i++) {
11+
answer += arr.indexOf(word[i]) * cnt[i] + 1;
12+
}
13+
return answer;
14+
}

hh830/BOJ_11725.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class BOJ_11725 {
5+
static ArrayList<Integer>[] tree;
6+
static int[] parent;
7+
static boolean[] visited;
8+
9+
public static void main(String[] args) throws IOException {
10+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
12+
int n = Integer.parseInt(br.readLine());
13+
14+
tree = new ArrayList[n + 1];
15+
parent = new int[n + 1];
16+
visited = new boolean[n + 1];
17+
18+
for (int i = 1; i <= n; i++) {
19+
tree[i] = new ArrayList<>();
20+
}
21+
22+
for (int i = 0; i < n - 1; i++) {
23+
StringTokenizer st = new StringTokenizer(br.readLine());
24+
int a = Integer.parseInt(st.nextToken());
25+
int b = Integer.parseInt(st.nextToken());
26+
27+
tree[a].add(b);
28+
tree[b].add(a);
29+
}
30+
31+
dfs(1); // 루트 노드
32+
33+
StringBuilder sb = new StringBuilder();
34+
for (int i = 2; i <= n; i++) {
35+
sb.append(parent[i]).append('\n');
36+
}
37+
38+
System.out.print(sb);
39+
}
40+
41+
static void dfs(int node) {
42+
visited[node] = true;
43+
for (int child : tree[node]) {
44+
if (!visited[child]) {
45+
parent[child] = node;
46+
dfs(child);
47+
}
48+
}
49+
}
50+
}

hh830/BOJ_1541.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class BOJ_1541 {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
7+
8+
String arr[] = bufferedReader.readLine().split("-");
9+
10+
int total=0;
11+
12+
for(int i=0;i<arr.length;i++){
13+
int sum = 0;
14+
String arr2[] = arr[i].split("\\+");
15+
16+
for(String num : arr2){
17+
sum += Integer.parseInt(num);
18+
}
19+
20+
if(i==0){
21+
total += sum;
22+
} else{
23+
total -= sum;
24+
}
25+
}
26+
27+
System.out.println(total);
28+
}
29+
}

julia8024/PGS_42860.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# 프로그래머스
2+
# Lv2 조이스틱
3+
4+
def solution(name):
5+
6+
pos_a = ord('A')
7+
pos_z = ord('Z')
8+
9+
answer = float('inf')
10+
11+
for i in range(len(name)//2 + 1):
12+
l_r = name[-i:] + name[:-i] # 왼쪽 먼저 + 오른쪽
13+
r_l = name[i::-1] + name[i+1:][::-1] # 기준점에서 뒤로 + 왼쪽
14+
15+
for n in [l_r, r_l]:
16+
# 끝의 A 자르기 (필요없음)
17+
while n and n[-1] == 'A':
18+
n = n[:-1]
19+
20+
cnt = [min(ord(c) - pos_a, (pos_z + 1) - ord(c)) for c in n]
21+
answer = min(answer, i + (len(cnt) -1) + sum(cnt))
22+
23+
return answer

julia8024/PGS_87694.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 프로그래머스
2+
# Lv3 아이템 줍기
3+
4+
from collections import deque
5+
6+
def solution(rectangle, characterX, characterY, itemX, itemY):
7+
answer = 0
8+
graph = [[-1 for _ in range(102)] for _ in range(102)]
9+
visited = [[1 for _ in range(102)] for _ in range(102)]
10+
direction = [(0, -1), (1, 0), (0, 1), (-1, 0)]
11+
dq = deque()
12+
13+
14+
# 테두리 =1, 내부 =0, 외부 =-1로 만들기
15+
for r in rectangle:
16+
x1, y1, x2, y2 = map(lambda x: x*2, r)
17+
for i in range(x1, x2+1):
18+
for j in range(y1, y2+1):
19+
if x1 < i < x2 and y1 < j < y2:
20+
graph[i][j] = 0
21+
# 다른 직사각형의 내부가 아니면서 테두리일 때 1로 채우기
22+
elif graph[i][j] != 0:
23+
graph[i][j] = 1
24+
25+
cx, cy, ix, iy = 2*characterX, 2*characterY, 2*itemX, 2*itemY
26+
27+
dq.append((cx, cy))
28+
29+
while dq:
30+
x, y = dq.popleft()
31+
32+
if x == ix and y == iy:
33+
answer = visited[x][y] // 2
34+
break
35+
for k in range(4):
36+
nx, ny = x + direction[k][0], y + direction[k][1]
37+
38+
if graph[nx][ny] == 1 and visited[nx][ny] == 1:
39+
visited[nx][ny] += visited[x][y]
40+
dq.append((nx, ny))
41+
42+
return answer

youbbin/PGS_42885.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
def solution(people, limit):
2+
people.sort()
3+
answer = 0
4+
a = 0
5+
b = len(people) - 1
6+
7+
while a <= b:
8+
if people[a] + people[b] > limit:
9+
b -= 1
10+
else:
11+
a += 1
12+
b -= 1
13+
answer += 1
14+
15+
return answer

0 commit comments

Comments
 (0)