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:|||