Skip to content

Commit 7eaef3a

Browse files
authored
Merge pull request #58 from songhajang/ssong
feat(ssong): 7주차 과제
2 parents 5b06e99 + 12a8790 commit 7eaef3a

File tree

3 files changed

+216
-0
lines changed

3 files changed

+216
-0
lines changed

Songha/week7/b11724.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package algorithm.week7;
2+
3+
import java.io.*;
4+
import java.util.*;
5+
6+
public class b11724 {
7+
static boolean visited[];
8+
static ArrayList<Integer>[] A;
9+
10+
public static void main(String[] args) throws IOException {
11+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
12+
StringTokenizer st = new StringTokenizer(br.readLine());
13+
14+
int n = Integer.parseInt(st.nextToken());
15+
int m = Integer.parseInt(st.nextToken());
16+
17+
visited = new boolean[n+1];
18+
A = new ArrayList[n+1];
19+
20+
21+
for(int i = 1; i < n+1; i++) {
22+
A[i] = new ArrayList<Integer>();
23+
}
24+
25+
for (int i = 0; i < m; i++) {
26+
// 입력값 받아오기
27+
st = new StringTokenizer(br.readLine());
28+
29+
int s = Integer.parseInt(st.nextToken());
30+
int e= Integer.parseInt(st.nextToken());
31+
32+
A[s].add(e);
33+
A[e].add(s);
34+
35+
}
36+
37+
38+
int count = 0;
39+
for (int i = 1; i < n+1; i++) {
40+
if(!visited[i]) {
41+
count++;
42+
43+
DFS(i);
44+
}
45+
}
46+
47+
48+
System.out.println(count);
49+
50+
51+
}
52+
53+
private static void DFS(int v) {
54+
if(visited[v]) {
55+
return ;
56+
}
57+
58+
// 재귀 함수
59+
visited[v] = true;
60+
for (int i : A[v]) {
61+
if(!visited[i]) {
62+
DFS(i);
63+
}
64+
}
65+
}
66+
}

Songha/week7/b13023.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package algorithm.week7;
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.StringTokenizer;
8+
9+
public class b13023 {
10+
static boolean isTrue;
11+
static boolean visited [];
12+
static ArrayList<Integer>[] A;
13+
14+
static int n;
15+
static int m;
16+
17+
public static void main(String[] args) throws IOException {
18+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
19+
StringTokenizer st = new StringTokenizer(br.readLine());
20+
21+
n = Integer.parseInt(st.nextToken()); // 친구 갯수
22+
m = Integer.parseInt(st.nextToken()); // 친구 관계 수
23+
24+
25+
visited = new boolean[n+1];
26+
A = new ArrayList[n+1];
27+
28+
for (int i = 0; i < n; i++) {
29+
A[i] = new ArrayList<Integer>();
30+
}
31+
32+
// 배열 만들기
33+
for (int i = 0; i < m; i++) {
34+
st = new StringTokenizer(br.readLine());
35+
int s = Integer.parseInt(st.nextToken()); // 사람
36+
int e = Integer.parseInt(st.nextToken()); // 관계
37+
38+
A[s].add(e);
39+
A[e].add(s);
40+
}
41+
42+
// backtraking
43+
for (int i = 0; i < n; i++) {
44+
if(!isTrue) {
45+
backtraking(i, 0);
46+
}
47+
48+
}
49+
50+
51+
System.out.println(isTrue ? "1": "0");
52+
53+
}
54+
55+
private static void backtraking(int v, int depth) {
56+
57+
// 정답
58+
if(depth == 4) {
59+
isTrue = true;
60+
return;
61+
}
62+
63+
visited[v] = true;
64+
for (int i : A[v]) {
65+
if(!visited[i]) {
66+
backtraking(i , depth+1);
67+
}
68+
}
69+
70+
visited[v] = false;
71+
72+
}
73+
74+
75+
}

Songha/week7/b2023.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package algorithm.week7;
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.StringTokenizer;
8+
9+
public class b2023 {
10+
static boolean isTrue;
11+
static boolean visited [];
12+
static ArrayList<Integer>[] A;
13+
14+
static int n;
15+
static int m;
16+
17+
public static void main(String[] args) throws IOException {
18+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
19+
StringTokenizer st = new StringTokenizer(br.readLine());
20+
21+
n = Integer.parseInt(st.nextToken()); // 친구 갯수
22+
m = Integer.parseInt(st.nextToken()); // 친구 관계 수
23+
24+
25+
visited = new boolean[n+1];
26+
A = new ArrayList[n+1];
27+
28+
for (int i = 0; i < n; i++) {
29+
A[i] = new ArrayList<Integer>();
30+
}
31+
32+
// 배열 만들기
33+
for (int i = 0; i < m; i++) {
34+
st = new StringTokenizer(br.readLine());
35+
int s = Integer.parseInt(st.nextToken()); // 사람
36+
int e = Integer.parseInt(st.nextToken()); // 관계
37+
38+
A[s].add(e);
39+
A[e].add(s);
40+
}
41+
42+
// backtraking
43+
for (int i = 0; i < n; i++) {
44+
if(!isTrue) {
45+
backtraking(i, 0);
46+
}
47+
48+
}
49+
50+
51+
System.out.println(isTrue ? "1": "0");
52+
53+
}
54+
55+
private static void backtraking(int v, int depth) {
56+
57+
// 정답
58+
if(depth == 4) {
59+
isTrue = true;
60+
return;
61+
}
62+
63+
visited[v] = true;
64+
for (int i : A[v]) {
65+
if(!visited[i]) {
66+
backtraking(i , depth+1);
67+
}
68+
}
69+
70+
visited[v] = false;
71+
72+
}
73+
74+
75+
}

0 commit comments

Comments
 (0)