6주차

1 분 소요

계획

  • 먼저 알고리즘을 위주로 학습(그래프 관련 학습 -> 그래프는 개념이 미흡하므로 개념위주 학습)
  • 웹프로그래밍은 후순위로 하여 기존 페이지 발전

결과

  • 앞서한 과목들은 기존 자료구조 수업을 통해 배운내용을 복습하면서 예제를 풀이했다면 이번 그래프 관련은 기존에 학습하지 않아서 먼저 인프런 강의를 듣고 학습을 진행할려고 했으나, 알고리즘을 기반으로 한 강의여서 개념을 깊게 설명하지 않았다. 그래서 원래 가지고 있던 자료구조 교재를 통해 개념 학습을 한 후 대표적인 코드를 직접 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과목이 동시에 진행되면 이도저도 아니게 될 것 같아 오늘은 순전히 알고리즘 관련 학습만 하였다.

업데이트: