Programming/Java
-
[Java] 트리 자료구조의 개념과 구현Programming/Java 2021. 4. 5. 13:01
1. 트리 트리(Tree)란 계층적인 구조를 표현하기 위해 일상적으로 사용하는 구조이다. 회사의 조직도 컴퓨터 파일 시스템에서의 디렉토리와 서브디렉토리 구조 내 컴퓨터\C:\Program Files 트리의 용어 노드의 명칭 루트(root) 노드 : 맨 위에 위치한 노드 dog 가 루트노드이다. 리프(leaf) 노드 : 자식이 없는 노드 canine, fox, wolf가 리프노드이다. 리프노드가 아닌 노드를 인터널(internal) 노드라 부른다. 기타 용어 서브트리(sub-tree): 트리에서 어떤 한 노드와 그 노드의 자손들로 이루어진 트리를 부트리(sub-tree)라고 부른다. cat과 canine으로 이루어진 트리가 서브트리이다. 간선/엣지/링크/브랜치: 노드와 노드를 연결하는 선 레벨(level)..
-
[Java] 클래스와 인스턴스Programming/Java 2021. 4. 5. 13:00
클래스와 인스턴스 관련 개념을 알아보자 들어가기 전에! 자바는 객체지향 프로그래밍(OOP, Object-Oriented Programming)이 가능한 객체 지향 언어이다. 객체 지향 프로그래밍이란, 프로그래밍에서 필요한 모든 데이터를 객체(Object)로 취급하여, 각 객체들간의 관계를 서술하는 방식으로 프로그래밍하는 기법을 말한다. 해당 프로그래밍 기법을 기반으로 위의 워딩들을 이해할 수 있다. 따라서 앞으로 나올 단어들도 OOP의 관점에서 이해하면 된다. 용어정리 1. 클래스(Class): 객체(Object)를 만들 수 있는 '틀' 1.1. 필드(Field) : 클래스 내에서 정의한 객체의 속성/상태(state) 1.2. 메서드(Method) : 클래스 내에서 정의한 객체의 행위(behavior) ..
-
[Java] Queue 구현하고 JUnit5로 테스트하기Programming/Java 2021. 4. 5. 12:59
java로 Queue를 구현해보자! Requirements int 배열을 사용해서 정수를 저장하는 Queue를 구현하세요. ListNode head를 가지고 있는 ListNodeQueue 클래스를 구현하세요. void enqueue(int data)를 구현하세요. int dequeue()을 구현하세요. 목차 1. 큐 1.1. 큐의 개념 1.2. 큐의 기본연산 1.3. 큐의 활용 1.4. 자바의 큐 인터페이스 2. 코드 2.1. int 배열을 사용한 큐 2.1.1. 구현코드 2.1.2. 테스트코드 2.2. 노드를 사용한 큐 2.2.1. 구현코드 2.2.2. 테스트코드 1. 큐 1.1. 큐의 개념 제약조건이 있는 리스트 스택과 마찬가지로 제약조건이 있는 리스트이다. 데이터 삽입은 한쪽 끝에서, 삭제는 반대쪽..
-
[Java] Stack 구현하고 JUnit5로 테스트하기Programming/Java 2021. 4. 5. 12:59
Java로 Stack을 구현해보자! Requirements int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요. void push(int data)를 구현하세요. int pop()을 구현하세요. ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요. void push(int data)를 구현하세요. int pop()을 구현하세요. 목차 스택 1.1. 스택의 개념 1.2. 스택의 기본연산 1.3. 스택의 활용 : 괄호검사문제 1.4. 자바의 스택 클래스 코드 2.1. int 배열을 사용한 스택 2.1.1. 구현코드 2.1.2. 테스트코드 2.2. 노드를 사용한 스택 2.2.1. 구현코드 2.2.2. 테스트코드 1. 스택 1.1. 스택의 개념 제약조건이 있는 리스트 ..
-
[Java] LinkedList 구현하고 JUnit5로 테스트하기Programming/Java 2021. 4. 5. 12:58
Java로 LinkedList를 구현해보자! Requirements LinkedList에 대해 공부하세요. 정수를 저장하는 ListNode 클래스를 구현하세요. ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요. ListNode remove(ListNode head, int positionToRemove)를 구현하세요. boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요. 목차 1. 리스트 자료구조 1.1. 배열로 만든 리스트 1.2. 연결리스트 2. 연결리스트 2.1. 노드 2.2. 연결리스트의 종류 2.3. 자바의 연결리스트 클래스 3. 코드 3.1. 연결리스트 구현코드 ..
-
[Java] 선택문과 제어문Programming/Java 2021. 4. 5. 12:57
Java언어에서 flow control을 담당하는 선택문과 제어문을 공부해보자! 과제 회고 자바의 기본적인 문법은 알고 있었지만, 속성식으로 빠르게 배웠기 때문에 깊이가 없다고 생각했다. 그래서 이번 과제의 목표를 다음과 같이 잡았다. oracle documentation과 예제보고 키워드 사용법 제대로 이해하기 새롭게 업데이트 된 부분 공부하기 문서와 예제를 통해 공부를 하니까, 이미 알고있던 키워드도 더 잘 활용하는 방법을 배울 수 있었다. 또 새롭게 알게 된 내용도 많았다. forEach 메서드 새로운 Switch문 사용법 ->와 yield문 사용 배운 내용을 잘 활용하면, 좀 더 가독성 있는 코드를 짤 수 있을 거 같다. 프로그램의 흐름을 제어하는 선택문과 제어문 Java언어에서 프로그램의 흐름을..
-
[Java] GitHub API를 사용해서 대시보드 만들기Programming/Java 2021. 4. 5. 12:57
GitHub API를 사용해서 대시보드 만들기 Requirements 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것. 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것. Github 자바 라이브러리를 사용하면 편리합니다. 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다. 1. GitHub 자바 라이브러리 우선 GitHub 자바 라이브러리를 알아보았다. 우선 GitHub API란, GitHub가 제공하는 다양한 정보와 기능을 개발자의 응용 프로그램에서 사용할 수 있도록 제공하는 GitHub의 인터페이스이다. 해당 라이브러리는 이러한 GitHub A..
-
[Java] 자바파일 컴파일(javac)과 실행(java)Programming/Java 2021. 4. 5. 12:56
IDE를 사용하지 않고 자바파일(.java)을 컴파일하고 실행해보자. 자바파일을 실행하기 위해서는 컴파일과 실행과정을 거쳐야 한다. 이를 위해 자바 컴파일러와 자바 응용 프로그램 로더가 필요하다. javac.exe : JDK에 포함. 자바 컴파일러 java.exe : JRE에 포함. 자바 응용 프로그램 로더. javac 컴파일러가 만든 클래스 파일을 해석 및 실행 cf. 자바 11부터 JDK에 JRE를 포함한 형태로 배포된다. 1. 컴파일 package javabasic.week1; public class CompileDemo { static class SubClass{ void print(){ System.out.println("from SubClass."); } } public static void ..