6주차
계획
- 먼저 알고리즘을 위주로 학습(그래프 관련 학습 -> 그래프는 개념이 미흡하므로 개념위주 학습)
- 웹프로그래밍은 후순위로 하여 기존 페이지 발전
결과
- 앞서한 과목들은 기존 자료구조 수업을 통해 배운내용을 복습하면서 예제를 풀이했다면 이번 그래프 관련은 기존에 학습하지 않아서 먼저 인프런 강의를 듣고 학습을 진행할려고 했으나, 알고리즘을 기반으로 한 강의여서 개념을 깊게 설명하지 않았다. 그래서 원래 가지고 있던 자료구조 교재를 통해 개념 학습을 한 후 대표적인 코드를 직접 java를 통해 써보면서 실습을 했다.
int size; List[] a; public Graph(String[] args) { size = args.length; a = new List[size]; for(int i = 0; i<size; i++) a[i] = new List(args[i]); } public void add(String v, String w) { a[index(v)].add(index(w)); a[index(w)].add(index(v)); } public String toString() { if (size == 0) return "{}"; StringBuffer buf = new StringBuffer("{" + a[0]); for(int i = 1; i < size; i++) buf.append("," + a[i]); return buf + "}"; } private int index(String v) { for(int i = 0; i<size; i++) if (a[i].vertex.equals(v)) return i; return a.length; } private class List{ String vertex; Node edges; List(String vertex){ this.vertex = vertex; } public void add(int j) { edges = new Node(j, edges); } public String toString() { StringBuffer buf = new StringBuffer(vertex); if(edges != null) buf.append(":"); for(Node p = edges; p !=null; p=p.next) buf.append(Graph.this.a[p.to].vertex); return buf + ""; } private class Node{ int to; Node next; Node(int to, Node next){ this.to = to; this.next = next; } } } }
public class TestGraph {
public static void main(String[] args) {
Graph g = new Graph(new String[] {"A", "B", "C", "D", "E"});
System.out.println(g);
g.add("A", "B");
g.add("A", "C");
g.add("B", "C");
g.add("B", "D");
g.add("C", "D");
g.add("D", "E");
System.out.println(g);
}
}
- 웹프로그래밍은 확실히 2과목을 동시에 학습하는건 무리가 있다는 걸 확인했다. 3시간 동안 2과목이 동시에 진행되면 이도저도 아니게 될 것 같아 오늘은 순전히 알고리즘 관련 학습만 하였다.