Computer Science 24

권오흠 교수님의 [Java로 배우는 자료구조] 완강 후기/추천

인프런, 유튜브에서 볼 수 있는 권오흠 교수님의 자료구조 강의는 유명하다. 추천글도 많이 보았고 이 강의로 스터디를 하는 것도 몇 번 보게되어 나도 스터디에 참여하게 됐다. 인프런에서 이런 강의소개를 보게 되어서 https://www.inflearn.com/course/java-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0 [무료] Java로 배우는 자료구조 - 인프런 | 강의 Java 언어의 문법 + 기본적인 프로그래밍 스킬 + 자료구조를 동시에 학습해보세요, - 강의 소개 | 인프런... www.inflearn.com 3. 강좌 특징 사용언어 : Java학습 방법프로그래밍 경험이 없는 경우 : 처음부터 Java 언어는 처음이지만 C 프로그래밍에는 어느 정도 능숙한 경우 : 1-3 ..

[Java로 배우는 자료구조] 제4-4장: 이중연결리스트와 listIterator (2,3,4/4) 정리

전진 -> next 강의에서는 KWLinkedList를 완벽하게 구현하지 않았기 때문에 Java.util에서 제공해 주는 LinkedList를 이용해 수정한다. 강의의 목적은 LinkedList을 직접 구현해보면서 속에서 어떻게 돌아가는지 파악하기 위해서 이다. 단방향 연결리스트와 단방향 연결리스트를 다루었는데, 그 외 다른 연결리스트도 많고 그 중 대표적인것이 원형 이중연결 리스트이다. package Ch4_4; import java.util.Iterator; import java.util.ListIterator; import java.util.NoSuchElementException; public class KWLinkedList { private Node head = null; private Nod..

[Java로 배우는 자료구조] 제4-4장: 이중연결리스트와 listIterator (1/4) 정리

이중연결 리스트 단방향 연결 리스트의 한계 단반향의 순회만 가능 어떤 노드 앞에 새로운 노드를 삽입하기 어려움 삭제의 경우에 항상 삭제할 노드의 앞노드가 필요 이중 연결 리스트 각각의 노드가 다음 노드와 이전 노드의 주소를 가지는 연결 리스트 양방향 순회가 가능 Iterator의 양방향 버전! Iterator의 remove - 방금 지나쳐 온 전 노드를 삭제 ListIterator의 remove - previous든 next든 방금 지나쳐 온 노드를 삭제 add - 금방 삽입한 노드의 뒷자리를 리턴하게 됨 set - remove와 비슷함. previous든 next든 방금 지나쳐 온 노드를 덮어씌울것

[Java로 배우는 자료구조] 제4-3장: 연결리스트와 Iterator (1,2,3/3) 정리

이 7가지 메서드를 제외하고 다른 메서드들은 private이여야한다 (3/3) package Ch4_2; import java.util.Iterator; import java.util.NoSuchElementException; public class MySingleLinkedList { //첫번째 노드 주소 private Node head; private int size; public MySingleLinkedList() { head = null; size = 0; } //inner class private static class Node { public T data; public Node next; public Node( T item ){ data = item; next = null; } } priva..

[Java로 배우는 자료구조] 제4-2장: 연결리스트 응용예(다항식 프로그램)

package Ch4_2; public class Term { public int coef; //계수 public int expo; //차수 public Term( int c, int e ) { coef = c; expo = e; } public int calc ( int x ){ return coef * (int)Math.pow( x, expo ); } public String toString() { return coef + "x^" + expo; } } package Ch4_2; import Ch4_1.MySingleLinkedList; import Ch4_1.Node; public class Polynomial { public char name; public MySingleLinkedList ter..

[Java로 배우는 자료구조] 제4-1장: 연결리스트의 개념과 기본연산 (4,5/5)

package Ch4_1; public class MySingleLinkedList { //첫번째 노드 주소 public Node head; public int size; public MySingleLinkedList() { head = null; size = 0; } public void addFirst( T item ){ Node newNode = new Node(item); // T: type parameter newNode.next = head; head = newNode; size++; // Node [] arr = new Node [100]; //not ok // T t = new T() // not ok } public void addAfter( Node before, T item ){ No..

[Java로 배우는 자료구조] 제4-1장: 연결리스트의 개념과 기본연산 (1,2,3/5) 정리

연결리스트 (Linked List) 1단계 문법 2단계 coding skill 3단계 자료구조 Linked List Stack, queue tree graph 리스트(List) 리스트 기본적인 연산: 삽입(insert), 삭제(remove), 검색(search) 등 리스트를 구현하는 대표적인 두가지 방법: 배열, 연결리스트 배열의 단점 크기가 고정 - reallocation이 필요 리스트의 중간에 원소를 삽입하거나 삭제할 경우 다수의 데이터를 옮겨야 함 연결리스트 다른 데이터의 이동없이 중간에 삽입이나 삭제가 가능하며, 길이의 제한이 없음 but, 랜덤 엑세스가 불가능 (예 : 네 번째 데이터를 바로 알수없고 첫번째부터 순서대로가서 찾아가야한다) 연결리스트 첫번째 값의 자리(첫번째 노드) 기억 → 그 다..

[Java로 배우는 자료구조] 제3-5장: Generic 프로그래밍과 Generics 정리

[Java로 배우는 자료구조] 제3-5장: Generic 프로그래밍과 Generics (1/3) 제네릭 프로그래밍 Generic Programming 데이터 형식에 의존 하지 않음 types to-be-specified-later : 나중에 지정되는 타입 Generic(포괄적인) ↔ specific (특정한) Generic 한 변수/ 자료구조 Object obj; Generic한 알고리즘 ( method ) Arrays.sort(shapes,0,n); ⇒ polymorphism 다형성, 상속, 인터페이스 이용해 구현 Generic클래스 를 구현하기 위해 새로운 문법이 필요 → Generics Generics parameterized된 클래스 (가상의 타입 지정 → T ( type parameter) ) ..

[Java로 배우는 자료구조] 제3-4장: 추상클래스와 인터페이스 정리

추상클래스 추상 메서드는 선언만 있고 구현이 없는 메서드 추상메서드를 포함한 클래스는 추상클래스 추상 메서드, 추상 클래스는 키워드 abstract 로 표시 추상 클래스는 객체를 만들 수 없음. 따라서 서브 클래스를 만드는 용도로만 사용 (extends사용) 인터페이스 추상메서드만을 가진 순수한 추상 클래스 (극단적인 추상클래스) static final 데이터 멤버(상수)를 가질 수 있음 예: Payable 인터페이스를 구현( implements)하는 클래스는 메서드 calcSalary와 salaried를 실제로 구현해야한다. 자바가 제공하는 메소드 Arrays.sort — generic method :타입을 가리지 않는다 Comparable (비교해서 정렬하기위해..) 추상클래스 vs 인터페이스 추상메..

[Java로 배우는 자료구조] 제3-4장: 추상클래스와 인터페이스 (1/4) 정리

추상 메서드는 선언만 있고 구현이 없는 메서드 추상메서드를 포함한 클래스는 추상클래스 추상 메서드, 추상 클래스는 키워드 abstract 로 표시 추상 클래스는 객체를 만들 수 없음. 따라서 서브 클래스를 만드는 용도로만 사용 (extends사용) package Ch3_4; import java.util.Scanner; public class Scheduler { // OneDayEvent [] onedays = new OneDayEvent [100]; // DurationEvent [] durations = new DurationEvent [100]; // DeadlinedEvent [] deadlines = new DeadlinedEvent [100]; // ->배열을 3개 만들것이 아니라 공통 상위..