From 6ed781a55f2ac99d68fbaad52e00a7031fdb5f5d Mon Sep 17 00:00:00 2001
From: EunjiShin <38103085+EunjiShin@users.noreply.github.com>
Date: Mon, 22 Nov 2021 20:05:42 +0900
Subject: [PATCH 01/13] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 3e6c1b4..0fdd0d9 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@
|1주차
(10.25 ~ 11.7)|정렬
(정렬 알고리즘
& 시간 복잡도)|스택/큐|[K 번째 수](https://programmers.co.kr/learn/courses/30/lessons/42748),
[수 정렬하기](https://www.acmicpc.net/problem/2750), [세 수 정렬](https://www.acmicpc.net/problem/2752)|[가장 큰 수](https://programmers.co.kr/learn/courses/30/lessons/42746), [H-Index](https://programmers.co.kr/learn/courses/30/lessons/42747), [시리얼 번호](https://www.acmicpc.net/problem/1431),
[공통 순열](https://www.acmicpc.net/problem/1622), [K번째 수 찾는 함수](https://www.acmicpc.net/problem/16455)|[전화번호 목록](https://www.acmicpc.net/problem/5052),
[버블 소트](https://www.acmicpc.net/problem/1377)|
|2주차
(11.8 ~ 11.14)|해시|힙|[완주하지 못한 선수](https://programmers.co.kr/learn/courses/30/lessons/42576),
[Duplicates](https://www.acmicpc.net/problem/15098)|[전화번호 목록](https://programmers.co.kr/learn/courses/30/lessons/42577), [위장](https://programmers.co.kr/learn/courses/30/lessons/42578),
[숫자 카드2](https://www.acmicpc.net/problem/10816), [듣보잡](https://www.acmicpc.net/problem/1764), [비밀번호 찾기](https://www.acmicpc.net/problem/17219)|[베스트 앨범](https://programmers.co.kr/learn/courses/30/lessons/42579),
[친구 네트워크](https://www.acmicpc.net/problem/4195)|
|3주차
(11.15 ~ 11.21)|완전 탐색|이분 탐색|[모의고사](https://programmers.co.kr/learn/courses/30/lessons/42840), [블랙잭](https://www.acmicpc.net/problem/2798), [분해합](https://www.acmicpc.net/problem/2231)|[소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/42839), [카펫](https://programmers.co.kr/learn/courses/30/lessons/42842), [숫자야구](https://www.acmicpc.net/problem/2503),
[퇴사](https://www.acmicpc.net/problem/14501)|[테트로미노](https://www.acmicpc.net/problem/14500), [치킨배달](https://www.acmicpc.net/problem/15686)|
-|4주차
(11.22 ~ 11.28)|DFS/BFS|그래프||||
+|4주차
(11.22 ~ 11.28)|DFS/BFS|그래프|X|[타겟 넘버](https://programmers.co.kr/learn/courses/30/lessons/43165), [DFS와 BFS](https://www.acmicpc.net/problem/1260), [바이러스](https://www.acmicpc.net/problem/2606),
[섬의 개수](https://www.acmicpc.net/problem/4963), [미로 탐색](https://www.acmicpc.net/problem/2178)|[네트워크](https://programmers.co.kr/learn/courses/30/lessons/43162), [단어 변환](https://programmers.co.kr/learn/courses/30/lessons/43163), [여행경로](https://programmers.co.kr/learn/courses/30/lessons/43164), [연구소](https://www.acmicpc.net/problem/14502)|
|5주차
(11.29 ~ 12.5)|DP|Greedy||||
@@ -45,9 +45,9 @@
| 참여자 | 1주차 | 2주차 | 3주차 | 4주차 | 5주차 |
| --- | --- | --- | --- | --- | --- |
-| EunjiShin |:white_check_mark:|:white_check_mark:||||
+| EunjiShin |:white_check_mark:|:white_check_mark:|:white_check_mark:|||
| RyanLee |:white_check_mark:|||||
-| GnuPark ||||||
+| GnuPark |:white_check_mark:|:white_check_mark:|:white_check_mark:|||
| YoungjinShin |:white_check_mark:|:white_check_mark:||||
From 0351ff512496f1e1655b422ee4e09722eec63aa7 Mon Sep 17 00:00:00 2001
From: yjshin229 <78634177+yjshin229@users.noreply.github.com>
Date: Mon, 22 Nov 2021 18:30:48 -0500
Subject: [PATCH 02/13] =?UTF-8?q?week3=20=EB=AA=A8=EC=9D=98=EA=B3=A0?=
=?UTF-8?q?=EC=82=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../3\354\243\274\354\260\250/mathTest.java" | 53 +++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 "YoungjinShin/3\354\243\274\354\260\250/mathTest.java"
diff --git "a/YoungjinShin/3\354\243\274\354\260\250/mathTest.java" "b/YoungjinShin/3\354\243\274\354\260\250/mathTest.java"
new file mode 100644
index 0000000..1e10676
--- /dev/null
+++ "b/YoungjinShin/3\354\243\274\354\260\250/mathTest.java"
@@ -0,0 +1,53 @@
+import java.util.*;
+
+
+public class mathTest{
+ public static void main(String[] args){
+ Scanner sc = new Scanner(System.in);
+ int testCase = sc.nextInt();
+ int[] answer = new int[testCase];
+ for(int i = 0; i tempanswer = new ArrayList<>();
+
+ int max = Arrays.stream(ansCount).max().getAsInt();
+
+ for (int i = 0; i < ansCount.length; i++){
+ if (ansCount[i] == max){
+ tempanswer.add(i+1);
+ }
+ }
+ int[] answer = tempanswer.stream().mapToInt(i -> i).toArray();
+
+ return answer;
+ }
+}
\ No newline at end of file
From 7e60402b7b759949b8ba9f44a28c84a2e253731d Mon Sep 17 00:00:00 2001
From: printSANO
Date: Mon, 22 Nov 2021 23:56:15 -0800
Subject: [PATCH 03/13] =?UTF-8?q?[211123]Programmers=202=EC=A3=BC&3?=
=?UTF-8?q?=EC=A3=BC=EC=B0=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
RyanLee/Programmers/finish.java | 18 +++++++++++
...\354\235\230\352\263\240\354\202\254.java" | 32 +++++++++++++++++++
2 files changed, 50 insertions(+)
create mode 100644 RyanLee/Programmers/finish.java
create mode 100644 "RyanLee/Programmers/\353\252\250\354\235\230\352\263\240\354\202\254.java"
diff --git a/RyanLee/Programmers/finish.java b/RyanLee/Programmers/finish.java
new file mode 100644
index 0000000..97786bc
--- /dev/null
+++ b/RyanLee/Programmers/finish.java
@@ -0,0 +1,18 @@
+package Programmers;
+import java.util.HashMap;
+
+public class finish{
+ public String solution(String[] participant, String[] completion) {
+ String answer = "";
+ HashMap hm = new HashMap<>();
+ for(String player : participant) hm.put(player , hm.getOrDefault(player,0)+1);
+ for(String player : completion) hm.put(player , hm.get(player)-1);
+
+ for(String key : hm.keySet()){
+ if (hm.get(key) !=0){
+ answer = key;
+ }
+ }
+ return answer;
+ }
+}
diff --git "a/RyanLee/Programmers/\353\252\250\354\235\230\352\263\240\354\202\254.java" "b/RyanLee/Programmers/\353\252\250\354\235\230\352\263\240\354\202\254.java"
new file mode 100644
index 0000000..f6ed40c
--- /dev/null
+++ "b/RyanLee/Programmers/\353\252\250\354\235\230\352\263\240\354\202\254.java"
@@ -0,0 +1,32 @@
+package Programmers;
+
+public class 모의고사 {
+ public static int[] solution(int[] answers) {
+ int[] answer;
+
+ int[] a = new int[]{1,2,3,4,5};
+ int[] b = new int[]{2,1,2,3,2,4,2,5};
+ int[] c = new int[]{3,3,1,1,2,2,4,4,5,5};
+
+ int[] score = new int[3];
+ for(int i=0; i max){ max = score[i]; }
+ }
+ int maxCount = 0;
+ for(int i=0; i<3; i++){
+ if(score[i] == max){ maxCount++; }
+ }
+ answer = new int[maxCount];
+ int idx = 0;
+ for(int i=0; i<3; i++){
+ if(score[i] == max) answer[idx++] = i+1;
+ }
+ return answer;
+ }
+}
From 230844266cbcbd2ac44ffde7b28d1c49d1ee6148 Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Tue, 23 Nov 2021 21:47:16 +0900
Subject: [PATCH 04/13] =?UTF-8?q?[211123]=20=EC=9D=B4=EC=A7=84=20=ED=8A=B8?=
=?UTF-8?q?=EB=A6=AC=20=EC=95=8C=EA=B3=A0=EB=A6=AC=EC=A6=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GnuPark/DS/binary_tree.java | 67 +++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 GnuPark/DS/binary_tree.java
diff --git a/GnuPark/DS/binary_tree.java b/GnuPark/DS/binary_tree.java
new file mode 100644
index 0000000..8e33073
--- /dev/null
+++ b/GnuPark/DS/binary_tree.java
@@ -0,0 +1,67 @@
+//Inorder (Left, Root, Right): 4 2 5 1 3
+//Preorder (Root, Left, Right): 1 2 4 5 3
+//Postorder (Left, Right, Root): 4 5 2 3 1
+
+class Node {
+ int data;
+ Node left;
+ Node right;
+}
+
+class Tree {
+ public Node root;
+
+ public void setRoot(Node node) {
+ this.root = node;
+ }
+
+ public Node getroot() {
+ return root;
+ }
+
+ public Node makeNode(Node left, int data, Node right) {
+ Node node = new Node();
+ node.data = data;
+ node.left = left;
+ node.right = right;
+ return node;
+ }
+
+ public void inorder(Node node) {
+ if (node != null) {
+ inorder(node.left);
+ System.out.println(node.data);
+ inorder(node.right);
+ }
+ }
+
+ public void preorder(Node node) {
+ if (node != null) {
+ System.out.println(node.data);
+ preorder(node.left);
+ preorder(node.right);
+ }
+ }
+
+ public void postorder(Node node) {
+ if (node != null) {
+ postorder(node.left);
+ postorder(node.right);
+ System.out.println(node.data);
+ }
+ }
+}
+
+public class binary_tree {
+ public static void main(String[] args) {
+ Tree t = new Tree();
+ Node n4 = t.makeNode(null, 4, null);
+ Node n5 = t.makeNode(null, 5, null);
+ Node n2 = t.makeNode(n4, 2, n5);
+ Node n3 = t.makeNode(null, 3, null);
+ Node n1 = t.makeNode(n2, 1, n3);
+ t.setRoot(n1);
+ t.inorder(t.getroot());
+
+ }
+}
From 1f863268ad4d08e6d6b77079c68998b5fd41949d Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Tue, 23 Nov 2021 21:48:02 +0900
Subject: [PATCH 05/13] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EA=B5=AC=EC=A1=B0?=
=?UTF-8?q?=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GnuPark/{ => PS}/BOJ/2231.java | 0
GnuPark/{ => PS}/BOJ/2798.java | 0
.../\353\252\250\354\235\230\352\263\240\354\202\254.java" | 0
.../\354\271\264\355\216\253.java" | 0
.../PS/programmers/\354\240\225\353\240\254/level01_Sort.java" | 0
5 files changed, 0 insertions(+), 0 deletions(-)
rename GnuPark/{ => PS}/BOJ/2231.java (100%)
rename GnuPark/{ => PS}/BOJ/2798.java (100%)
rename "GnuPark/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\353\252\250\354\235\230\352\263\240\354\202\254.java" => "GnuPark/PS/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\353\252\250\354\235\230\352\263\240\354\202\254.java" (100%)
rename "GnuPark/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\354\271\264\355\216\253.java" => "GnuPark/PS/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\354\271\264\355\216\253.java" (100%)
rename "GnuPark/programmers/\354\240\225\353\240\254/level01_Sort.java" => "GnuPark/PS/programmers/\354\240\225\353\240\254/level01_Sort.java" (100%)
diff --git a/GnuPark/BOJ/2231.java b/GnuPark/PS/BOJ/2231.java
similarity index 100%
rename from GnuPark/BOJ/2231.java
rename to GnuPark/PS/BOJ/2231.java
diff --git a/GnuPark/BOJ/2798.java b/GnuPark/PS/BOJ/2798.java
similarity index 100%
rename from GnuPark/BOJ/2798.java
rename to GnuPark/PS/BOJ/2798.java
diff --git "a/GnuPark/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\353\252\250\354\235\230\352\263\240\354\202\254.java" "b/GnuPark/PS/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\353\252\250\354\235\230\352\263\240\354\202\254.java"
similarity index 100%
rename from "GnuPark/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\353\252\250\354\235\230\352\263\240\354\202\254.java"
rename to "GnuPark/PS/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\353\252\250\354\235\230\352\263\240\354\202\254.java"
diff --git "a/GnuPark/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\354\271\264\355\216\253.java" "b/GnuPark/PS/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\354\271\264\355\216\253.java"
similarity index 100%
rename from "GnuPark/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\354\271\264\355\216\253.java"
rename to "GnuPark/PS/programmers/\354\231\204\354\240\204\355\203\220\354\203\211/\354\271\264\355\216\253.java"
diff --git "a/GnuPark/programmers/\354\240\225\353\240\254/level01_Sort.java" "b/GnuPark/PS/programmers/\354\240\225\353\240\254/level01_Sort.java"
similarity index 100%
rename from "GnuPark/programmers/\354\240\225\353\240\254/level01_Sort.java"
rename to "GnuPark/PS/programmers/\354\240\225\353\240\254/level01_Sort.java"
From a8bcc5af523df997bfe8c8d8142985d3544bb804 Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Wed, 24 Nov 2021 12:30:26 +0900
Subject: [PATCH 06/13] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EA=B2=BD=EB=A1=9C?=
=?UTF-8?q?=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GnuPark/DS/{ => Trees & Graphs}/binary_tree.java | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename GnuPark/DS/{ => Trees & Graphs}/binary_tree.java (100%)
diff --git a/GnuPark/DS/binary_tree.java b/GnuPark/DS/Trees & Graphs/binary_tree.java
similarity index 100%
rename from GnuPark/DS/binary_tree.java
rename to GnuPark/DS/Trees & Graphs/binary_tree.java
From dcfea1fc07555f3d034fda7604ad941f784965ef Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Wed, 24 Nov 2021 12:32:05 +0900
Subject: [PATCH 07/13] =?UTF-8?q?[211124]=20=EC=9D=B4=EC=A7=84=20=ED=9E=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GnuPark/DS/Trees & Graphs/Binary_Heaps.md | 50 +++++++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 GnuPark/DS/Trees & Graphs/Binary_Heaps.md
diff --git a/GnuPark/DS/Trees & Graphs/Binary_Heaps.md b/GnuPark/DS/Trees & Graphs/Binary_Heaps.md
new file mode 100644
index 0000000..d434118
--- /dev/null
+++ b/GnuPark/DS/Trees & Graphs/Binary_Heaps.md
@@ -0,0 +1,50 @@
+# Min Heap
+
+```
+ 1 5
+ / \ / \
+ 2 3 4 3
+ / \ / \
+ 4 5 1 2
+Min Heap Max Heap
+```
+
+- Heap
+
+ - 최대 혹은 최소 값을 빠르게 찾기 위해 구현된 완전 이진트리를 기본으로한 자료구조
+
+ - Min Heap
+
+ - Root Node가 가장 작은 값이 되도록한 트리
+
+ - Max Heap
+
+ - 가장 큰 값이 맨 위에 오도록 자기 부모 노드에 자기 값보다 큰값을 두게 한 트리
+
+## 최소 힙에 노드 삽입하기
+
+1. 완전 트리에 맨끝에 노드를 추가
+
+2. 자신의 부모 노드와 비교해 자기 값이 작을 경우 부모 노드와 값 변경
+
+3. 2번 반복
+
+### 시간 복잡도
+
+- O(logn)
+
+ - 한 레벨에 절반씩 떨어짐
+
+## 최소 힙에 노드 꺼내오기
+
+1. 최소 힙에서 노드를 요청할땐 가장 작은 값인 루트를 꺼내온다.
+
+2. 루트 자리에 가장 마지막 노드를 넣는다.
+
+3. 자식 노드와 비교했을 때 더 작은 자식 노드의 값과 자리 교체
+
+4. 3번 반복
+
+### 시간 복잡도
+
+- O(logn)
From 521a60c029e08273bf7c8fbff06633e703160d54 Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Wed, 24 Nov 2021 12:32:46 +0900
Subject: [PATCH 08/13] [211124] BFS & DFS
---
GnuPark/DS/Trees & Graphs/DFS_BFS.md | 55 ++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100644 GnuPark/DS/Trees & Graphs/DFS_BFS.md
diff --git a/GnuPark/DS/Trees & Graphs/DFS_BFS.md b/GnuPark/DS/Trees & Graphs/DFS_BFS.md
new file mode 100644
index 0000000..26f1661
--- /dev/null
+++ b/GnuPark/DS/Trees & Graphs/DFS_BFS.md
@@ -0,0 +1,55 @@
+# DFS, BFS
+
+## DFS
+
+- Depth-First Search (DFS)
+
+ - inorder
+
+ - preorder
+
+ - postorder
+
+- 마지막 노드와 만날때까지 Child Node 순회
+
+- Stack으로 구현
+
+### 구현 순서
+
+1. 스택을 하나 만든다.
+
+2. 처음에는 시작할 노드를 넣는다.
+
+3. 스택에서 노드를 하나 꺼내서 해당 노드의 자식노드를 스택에 추가
+
+4. 꺼낸 노드는 출력
+
+5. 한번 스택에 담았던 노드는 다시 담지 않는다.
+
+### DFS: Recursion
+
+1. 시작 노드로 함수를 호출한다.
+
+2. 함수를 호출하면 자식 노드를 호출하기 전에 자기 자신을 출력한다.
+
+3.
+
+## BFS
+
+- Breath-First Search (BFS)
+
+ - Level 단위로 순회
+
+- Queue로 구현
+
+### 구현 순서
+
+1. 큐를 하나 만든다.
+
+2. 처음에는 시작할 노드를 넣는다.
+
+3. 큐에서 노드를 하나 꺼내서 해당 노드의 자식노드를 큐에 추가
+
+4. 꺼낸 노드는 출력
+
+5. 한번 큐에 담았던 노드는 다시 담지 않는다.
From cd9393bd62ce1ed427c2186a1be21182a746062d Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Wed, 24 Nov 2021 12:32:55 +0900
Subject: [PATCH 09/13] =?UTF-8?q?[211124]=20BFS=20&=20DFS=20=ED=85=9C?=
=?UTF-8?q?=ED=94=8C=EB=A6=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GnuPark/DS/Trees & Graphs/bfs_dfs.java | 186 +++++++++++++++++++++++++
1 file changed, 186 insertions(+)
create mode 100644 GnuPark/DS/Trees & Graphs/bfs_dfs.java
diff --git a/GnuPark/DS/Trees & Graphs/bfs_dfs.java b/GnuPark/DS/Trees & Graphs/bfs_dfs.java
new file mode 100644
index 0000000..27f0e85
--- /dev/null
+++ b/GnuPark/DS/Trees & Graphs/bfs_dfs.java
@@ -0,0 +1,186 @@
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Stack;
+import java.util.NoSuchElementException;
+
+class Queue {
+
+ class Node {
+ private T data;
+ private Node next;
+
+ public Node(T data) {
+ this.data = data;
+ }
+ }
+
+ private Node first;
+ private Node last;
+
+ public void enqueue(T item) {
+ Node t = new Node(item);
+
+ if (first == null) {
+ first = last;
+ }
+ last = t;
+ if (first == null) {
+ first = last;
+ }
+ }
+
+ public T dequeue() {
+ if (first == null) {
+ throw new NoSuchElementException();
+ }
+ T data = first.data;
+
+ first = first.next;
+
+ if (first == null) {
+ last = null;
+ }
+ return data;
+ }
+
+ public T peek() {
+ if (first == null) {
+ throw new NoSuchElementException();
+ }
+ return first.data;
+ }
+
+ public boolean isEmpty() {
+ return first == null;
+ }
+}
+
+class Graph {
+ class Node {
+ int data;
+ LinkedList adjacent;
+ boolean marked;
+
+ Node(int data) {
+ this.data = data;
+ this.marked = false;
+ adjacent = new LinkedList();
+ }
+ }
+
+ Node[] nodes;
+
+ Graph(int size) {
+ nodes = new Node[size];
+ for (int i = 0; i < size; i++) {
+ nodes[i] = new Node(i);
+ }
+ }
+
+ // 노드의 관계를 저장
+ void addEdge(int i1, int i2) {
+ Node n1 = nodes[i1];
+ Node n2 = nodes[i2];
+ if (!n1.adjacent.contains(n2)) {
+ n1.adjacent.add(n2);
+ }
+ if (!n2.adjacent.contains(n1)) {
+ n2.adjacent.add(n1);
+ }
+ }
+
+ // bfs를 인자 없이 시작하면 0번부터 시작
+ void dfs() {
+ dfs(0);
+ }
+
+ void dfs(int index) {
+ Node root = nodes[index];
+ Stack stack = new Stack();
+ stack.push(root);
+ root.marked = true;
+ while (!stack.isEmpty()) {
+ Node r = stack.pop();
+ for (Node n : r.adjacent) {
+ // 가져온 노드의 자식들 중 스택에 들어가지 않은 노드들만 스택에 추가
+ if (n.marked == false) {
+ n.marked = true;
+ stack.push(n);
+ }
+ }
+ visit(r);
+ }
+ }
+
+ void bfs() {
+ bfs(0);
+ }
+
+ void bfs(int index) {
+ Node root = nodes[index];
+ Queue queue = new Queue();
+ queue.enqueue(root);
+ root.marked = true;
+ // 큐가 비어있을때까지 반복 작업
+ while (!queue.isEmpty()) {
+ Node r = queue.dequeue();
+ // 큐에서 꺼낸 노드의 자식 노드들을 큐에 추가
+ for (Node n : r.adjacent) {
+ if (n.marked == false) {
+ n.marked = true;
+ queue.enqueue(n);
+ }
+ }
+ // 가지고 나온 노드는 출력
+ visit(r);
+ }
+ }
+
+ // 재귀 호출시 링크드리스트가 노드의 주소를 가지고 있기 때문에 재귀함수는 노드를 받는 형태가 되어야함.
+ void dfsR(Node r) {
+ if (r == null)
+ return;
+ r.marked = true;
+ visit(r);
+ for (Node n : r.adjacent) {
+ if (n.marked == false) {
+ dfsR(n);
+ }
+ }
+ }
+
+ // 시작 노드를 다양하게 받기 위해 배열방의 인덱스를 인자로 받는 형태 구현
+ void dfsR(int index) {
+ Node r = nodes[index];
+ dfsR(r);
+ }
+
+ void dfsR() {
+ dfsR(0);
+ }
+
+ // 방문할때 출력하는 함수
+ void visit(Node n) {
+ System.out.print(n.data + " ");
+ }
+}
+
+/*
+ * ------------------------------- 0 / 1 -- 3 7 | / | \ / | / | 5 2 -- 4 \ 6 - 8
+ */
+public class dfs_bfs {
+ public static void main(String[] args) {
+ Graph g = new Graph(9);
+ g.addEdge(0, 1);
+ g.addEdge(1, 2);
+ g.addEdge(1, 3);
+ g.addEdge(2, 4);
+ g.addEdge(3, 4);
+ g.addEdge(3, 5);
+ g.addEdge(5, 6);
+ g.addEdge(5, 7);
+ g.addEdge(6, 8);
+ g.dfsR();
+
+ }
+}
From 522d6125619904d2e4aba71953a0cd8451afd822 Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Sun, 28 Nov 2021 23:55:01 +0900
Subject: [PATCH 10/13] [211128] BOJ_1260
---
GnuPark/PS/BOJ/DFS_BFS/1260.java | 67 ++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 GnuPark/PS/BOJ/DFS_BFS/1260.java
diff --git a/GnuPark/PS/BOJ/DFS_BFS/1260.java b/GnuPark/PS/BOJ/DFS_BFS/1260.java
new file mode 100644
index 0000000..f2cf7f0
--- /dev/null
+++ b/GnuPark/PS/BOJ/DFS_BFS/1260.java
@@ -0,0 +1,67 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.StringTokenizer;
+
+public class 1260 {
+ static int map[][];
+ static boolean[] visit;
+ static int n, m, v;
+
+ public static void dfs(int i) {
+ visit[i] = true;
+ System.out.print(i + " ");
+ for (int j = 1; j < n + 1; j++) {
+ if (map[i][j] == 1 && visit[j] == false) {
+ }
+ }
+ }
+
+ public static void bfs(int i) {
+ Queue q = new LinkedList();
+ q.offer(i);
+ visit[i] = true;
+ // 방문한 위치는 알아야하니까, 그것을 체크하기 위해서 visit가 필요.
+ while (!q.isEmpty()) {
+ int temp = q.poll();
+ // 첫번째 방문한 위치는 빼주기로 한다.
+ System.out.print(temp + " ");
+ for (int k = 1; k <= n; k++) {
+ if (map[temp][k] == 1 && visit[k] == false) {
+ q.offer(k);
+ visit[k] = true;
+ }
+ }
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ String s = br.readLine();
+ StringTokenizer st = new StringTokenizer(s, " ");
+ n = Integer.parseInt(st.nextToken());
+ m = Integer.parseInt(st.nextToken());
+ v = Integer.parseInt(st.nextToken());
+ map = new int[n + 1][n + 1];
+ visit = new boolean[n + 1];
+ for (int j = 0; j < n + 1; j++) {
+ Arrays.fill(map[j], 0);
+ }
+ Arrays.fill(visit, false);
+ for (int i = 0; i < m; i++) {
+ String edge = br.readLine();
+ StringTokenizer st1 = new StringTokenizer(edge, " ");
+ int a = Integer.parseInt(st1.nextToken());
+ int b = Integer.parseInt(st1.nextToken());
+ map[a][b] = 1;
+ map[b][a] = 1;
+ }
+ dfs(v);
+ System.out.println();
+ Arrays.fill(visit, false);
+ bfs(v);
+ }
+}
From 99e2a59a67bc6ab8319c492264b97adec79ae0cb Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Sun, 28 Nov 2021 23:55:10 +0900
Subject: [PATCH 11/13] [211128] BOJ_2606
---
GnuPark/PS/BOJ/DFS_BFS/2606.java | 47 ++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 GnuPark/PS/BOJ/DFS_BFS/2606.java
diff --git a/GnuPark/PS/BOJ/DFS_BFS/2606.java b/GnuPark/PS/BOJ/DFS_BFS/2606.java
new file mode 100644
index 0000000..4844f09
--- /dev/null
+++ b/GnuPark/PS/BOJ/DFS_BFS/2606.java
@@ -0,0 +1,47 @@
+import java.util.*;
+
+public class Main {
+ static int node[][]; // 그래프 배열
+ static int check[]; // 방문 배열
+
+ static void bfs(int start) {
+ Queue queue = new LinkedList<>();
+
+ check[start] = 1;
+ queue.offer(start);
+ int cnt = 0;
+ while (!queue.isEmpty()) {
+ int x = queue.poll();
+
+ for (int i = 1; i < node.length; i++) { // 차례대로 1번과 연결 된 컴퓨터들을 찾아 cnt변수 증가
+ if (node[x][i] == 1 && check[i] != 1) {
+ queue.offer(i);
+ check[i] = 1;
+ cnt++;
+ }
+ }
+ }
+ System.out.println(cnt); // 모든 탐색을 마치고 cnt 출력
+ }
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+
+ int n = sc.nextInt(); // 컴퓨터의 수
+ int m = sc.nextInt(); // 네트워크 상에 연결되어 있는 컴퓨터 쌍의 수 즉, 간선의 수
+
+ node = new int[n + 1][n + 1];
+ check = new int[n + 1];
+ for (int i = 0; i < m; i++) { // 그래프 구성
+ int a = sc.nextInt();
+ int b = sc.nextInt();
+ node[a][b] = 1;
+ node[b][a] = 1;
+
+ }
+
+ bfs(1);
+
+ }
+
+}
\ No newline at end of file
From 7d62759b2d886fa07b867b90e1d79ee555c076d3 Mon Sep 17 00:00:00 2001
From: Gnu-Kenny
Date: Sun, 28 Nov 2021 23:55:30 +0900
Subject: [PATCH 12/13] =?UTF-8?q?[211128]=20=ED=94=84=EB=A1=9C=EA=B7=B8?=
=?UTF-8?q?=EB=9E=98=EB=A8=B8=EC=8A=A4=5F=ED=83=80=EA=B2=9F=EB=84=98?=
=?UTF-8?q?=EB=B2=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../PS/programmers/DFS_BFS/target_number.java | 26 +++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 GnuPark/PS/programmers/DFS_BFS/target_number.java
diff --git a/GnuPark/PS/programmers/DFS_BFS/target_number.java b/GnuPark/PS/programmers/DFS_BFS/target_number.java
new file mode 100644
index 0000000..1b1014a
--- /dev/null
+++ b/GnuPark/PS/programmers/DFS_BFS/target_number.java
@@ -0,0 +1,26 @@
+class Solution {
+ static int answer;
+
+ public void dfs(int[] numbers, int target, int idx, int sum) {
+ if (idx == numbers.length) {
+ if (sum == target)
+ answer++;
+ return;
+ }
+
+ sum += numbers[idx];
+ dfs(numbers, target, idx + 1, sum);
+ sum -= numbers[idx];
+ sum += (-1 * numbers[idx]);
+ dfs(numbers, target, idx + 1, sum);
+
+ }
+
+ public int solution(int[] numbers, int target) {
+ answer = 0;
+
+ dfs(numbers, target, 0, 0);
+
+ return answer;
+ }
+}
\ No newline at end of file
From 749e18a92730870e93471b849ae55fdab47e5bdb Mon Sep 17 00:00:00 2001
From: EunjiShin <38103085+EunjiShin@users.noreply.github.com>
Date: Mon, 29 Nov 2021 18:16:21 +0900
Subject: [PATCH 13/13] Update README.md
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 0fdd0d9..a1bf41a 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@
|2주차
(11.8 ~ 11.14)|해시|힙|[완주하지 못한 선수](https://programmers.co.kr/learn/courses/30/lessons/42576),
[Duplicates](https://www.acmicpc.net/problem/15098)|[전화번호 목록](https://programmers.co.kr/learn/courses/30/lessons/42577), [위장](https://programmers.co.kr/learn/courses/30/lessons/42578),
[숫자 카드2](https://www.acmicpc.net/problem/10816), [듣보잡](https://www.acmicpc.net/problem/1764), [비밀번호 찾기](https://www.acmicpc.net/problem/17219)|[베스트 앨범](https://programmers.co.kr/learn/courses/30/lessons/42579),
[친구 네트워크](https://www.acmicpc.net/problem/4195)|
|3주차
(11.15 ~ 11.21)|완전 탐색|이분 탐색|[모의고사](https://programmers.co.kr/learn/courses/30/lessons/42840), [블랙잭](https://www.acmicpc.net/problem/2798), [분해합](https://www.acmicpc.net/problem/2231)|[소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/42839), [카펫](https://programmers.co.kr/learn/courses/30/lessons/42842), [숫자야구](https://www.acmicpc.net/problem/2503),
[퇴사](https://www.acmicpc.net/problem/14501)|[테트로미노](https://www.acmicpc.net/problem/14500), [치킨배달](https://www.acmicpc.net/problem/15686)|
|4주차
(11.22 ~ 11.28)|DFS/BFS|그래프|X|[타겟 넘버](https://programmers.co.kr/learn/courses/30/lessons/43165), [DFS와 BFS](https://www.acmicpc.net/problem/1260), [바이러스](https://www.acmicpc.net/problem/2606),
[섬의 개수](https://www.acmicpc.net/problem/4963), [미로 탐색](https://www.acmicpc.net/problem/2178)|[네트워크](https://programmers.co.kr/learn/courses/30/lessons/43162), [단어 변환](https://programmers.co.kr/learn/courses/30/lessons/43163), [여행경로](https://programmers.co.kr/learn/courses/30/lessons/43164), [연구소](https://www.acmicpc.net/problem/14502)|
-|5주차
(11.29 ~ 12.5)|DP|Greedy||||
+|5주차
(11.29 ~ 12.5)|DP|Greedy|[설탕 배달](https://www.acmicpc.net/problem/2839), [피보나치 수5](https://www.acmicpc.net/problem/10870), [피보나치 수2](https://www.acmicpc.net/problem/2748)|[1로 만들기](https://www.acmicpc.net/problem/1463), [1,2,3 더하기](https://www.acmicpc.net/problem/9095), [피보나치 함수](https://www.acmicpc.net/problem/1003), [RGB 거리](https://www.acmicpc.net/problem/1149)|[N으로 표현](https://programmers.co.kr/learn/courses/30/lessons/42895), [정수 삼각형](https://programmers.co.kr/learn/courses/30/lessons/43105), [등굣길](https://programmers.co.kr/learn/courses/30/lessons/42898), [도둑질](https://programmers.co.kr/learn/courses/30/lessons/42897)|
@@ -46,9 +46,9 @@
| 참여자 | 1주차 | 2주차 | 3주차 | 4주차 | 5주차 |
| --- | --- | --- | --- | --- | --- |
| EunjiShin |:white_check_mark:|:white_check_mark:|:white_check_mark:|||
-| RyanLee |:white_check_mark:|||||
-| GnuPark |:white_check_mark:|:white_check_mark:|:white_check_mark:|||
-| YoungjinShin |:white_check_mark:|:white_check_mark:||||
+| RyanLee |:white_check_mark:|:white_check_mark:|:white_check_mark:|||
+| GnuPark |:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:||
+| YoungjinShin |:white_check_mark:|:white_check_mark:|:white_check_mark:|||