전체 글 31

21/01/03

내가 저번회고 때 지키려고 했던 것들은 다음과 같다. 매일 알고리즘 2문제를 풀이하고 깃허브에 푸쉬한다.(하루에 일과가 끝나지 않았는데 문제를 더 푸는것은 안된다.) 2주일을 한개의 기간으로 두고 책 한권에 대한 블로그를 정리한다.(당일 6시 까지만 글을 작성한다. 글 갯수는 중요하지 않다. 각 단원에 대해서 내용을 정리하기 어렵다면 책 한권에 대한 내용을 글 한개에 정리하여도 좋다.) 월요일 제외 6시 이후의 시간은 무조건 개인 프로젝트에 할애한다. 결과부터 말하자면 1,3 번은 수행했으나 2번을 지키지 못했다. 자세하게는 책을 1단원만 읽고 더이상 나아가지 못했다. 왜 책을 읽지 못했을까에 대해 생각을 해보자 연말이라 기분이 붕 떠있었다. 알고리즘 2문제를 푸는데 시간이 너무 오래걸렸다. 난이도가 어..

실패록/회고록 2021.01.03

[Java] 패키지

0. 목표 package 키워드 import 키워드 클래스패스 클래스패스 환경변수 클래스패스 옵션 접근지시자 1. package 서로 다른 용도로 만들어진, 같은 이름의 클래스를 구분하기 위해서 만들어진 개념이다. 다음의 요구사항을 가진 프로그램을 각각의 회사에서 기능을 나누어맡아 구현한다고 가정해보자. 카카오는 계산기에서 곱셈을 구현한다. 네이버는 계산기에서 덧셈을 구현한다. 이제 두 회사의 결과물을 모아서 종합적인 계산기를 만들려고 한다. 그런데 모아놓고보니 문제가 생겼다. 두 회사 모두 계산기 클래스의 이름을 Calculator라고 정한것이다. 동일한 패키지 내부에는 같은 클래스의 이름이 존재할 수 없다. 그렇다고 한 회사의 클래스 명을 바꾸자니 그것만큼 클래스의 이름을 대표하기에 적절한 단어가 없..

Java/STUDY HALLE 2020.12.29

[Java] 상속

0. 학습 목표 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 디스패치 (더블 디스패치) 추상클래스 final 키워드 Object 클래스 1. 자바 상속의 특징 1-1. 상속이란? 상속이란 상위클래스에서 정의한 필드와 메서드를 하위클래스도 동일하게 사용할 수 있게 물려받는 것이다. 1-2. 상속을 사용하는 이유 코드를 재사용하기에 편하고 클래스 간 계층구조를 분류하고 관리하기 쉬워진다. 영웅이 빌런들을 물리치며 세계 평화를 지키는 게임을 만든다고 가정하자. 영웅은 hp, 공격력, 레벨을 가지며 상대방을 공격할 수 있고 레벨만큼 상대방의 공격력을 방어할 수 있다. 빌런은 hp, 공격력 방어력을 가지며 상대방을 공격할 수 있고 단단한 방어력으로 상대방의 공격을 방어력만큼 막을 수 있다. 위 ..

Java/STUDY HALLE 2020.12.22

20/12/20

2주간 세워놓았던 목표와 내가 수행에 성공한 목표들을 비교분석해보았다. 내가 할 일은 다음과 같았다. 1. 매일 1문제 이상 알고리즘 문제를 풀이하고 깃허브에 푸쉬한다.(성공) 알고리즘 풀이 실력이 부족하여 조금더 많은 욕심을 부렸고 하루에 알고리즘 3~4문제를 풀이하면서 매일 깃허브에 푸쉬하였다. 2. 전문서적, 공식 문서를 통해 내가 사용하는 기술의 이론덕인 내용들을 공부해서 하루에 한개씩 블로그에 정리하여 작성한다.(실패) 책을 읽고 그 내용을 정리한다는것이 생각보다 어려운 일이었다. 개념은 이해했지만 어떻게 이것을 글로 표현할까에 대해서 고민을 하다보니 너무 많은 시간이 흘러갔고 예상보다 시간을 너무 잡아먹게 되었다. 그래서 한 주제에 대해 글을 오랫동안 작성하게되었고, 블로그 글을 매일 작성하지..

실패록/회고록 2020.12.20

[책읽기] 오브젝트(2) - 객체지향 프로그래밍

이번 챕터에서는 어떻게 객체지향을 활용하여 프로그램을 구성할 수 있는지 학습한다. 책에 있는 영화 예매 시스템 예제를 그대로 따라할 것이다. 책을 따라하면서 객체 지향에 대한 감을 잡아보도록 하자. 0. 요구사항 살펴보기 사용자가 온라인 영화 예매 시스템을 활용해서 영화를 예매할 수 있다. 할인조건에 맞는 예매자는 요금을 할인받을 수 있다. 할인조건은 순서조건과, 기간조건 두가지가 있다. 기간조건은 요일 시작시간 종료시간 세부분으로 구성되며 영화 시작시간이 해당 기간안에 포함될 경우 요금을 할인한다. 할인 조건에 해당하는 예매자는 할인정책에 따라 요금을 할인받을 수 있다. 할인정책은 금액할인정책과 비율할인 정책이 있다. 영화별로 하나의 할인정책만 할당할 수 있다. 할인정책을 지정하지 않는것도 가능하다. ..

Java/책읽기 2020.12.17

[Java] 클래스

0. 목표 자바의 Class에 대해서 학습한다. 학습할 것(필수) (클래스란?) 클래스를 정의하는 방법 객체를 만드는 방법 (new 연산자 이해하기) 메소드를 정의하는 방법 생성자를 정의하는 방법 this란 무엇인가? this. 와 this() 학습할 것(추가) (이진트리란?) 이진트리 구현하기 이진탐색트리 구현하기 (추가)contains(int number) 구현 (추가)remove(int number) 구현 Plus Ultra 이진 트리의 활용 균형 이진 탐색트리 AVL 트리 Red - Black 트리 힙 1. 클래스란? 내가 원하는 작업을 수행 할 함수, 프로시져, (작업을 진행하는데 필요한) 변수들을 한군데에 모아서 인지하기 쉽도록 만든것 2. 클래스를 정의하는 방법 Place.java class..

Java/STUDY HALLE 2020.12.16

[책읽기] 오브젝트(1) - 객체, 설계

티켓 판매 애플리케이션 만들기 소극장은 관람객들을 모으기 위해 이벤트로 초대장을 배부하였고 관람객을 맞이한다. 관람객을 맞이할 때 초대장이 있는 사람과 없는 사람을 구분해야한다. 초대장이 있는 사람은 초대장을 티켓으로 교환한 후 입장을 할 수 있고 초대장이 없는 사람은 비용을 지불하여 티켓을 획득한 후 입장을 할 수 있다. 위의 내용을 감안하여 다음과 같은 구조의 클래스를 설계하여 1차적인 구성을 완료해보자. 1차 구현코드 Ticket.java public class Ticket { private Long fee; public Long getFee() { return fee; } } TicketOffice.java import java.util.ArrayList; import java.util.Array..

Java/책읽기 2020.12.10

[Java] 선형 자료구조

0.선형 자료구조 위의 그림과 같이 하나의 자료 뒤에 하나의 자료가 1:1관계로 존재하는 것을 선형 자료구조라고 한다. 선형자료구조에는 배열, 연결리스트, 스택, 큐, 덱 등이 있다. 이번 포스트에서는 연결리스트, 스택, 큐의 기본적인 로직을 직접 구현해보려고 한다. 1.연결리스트 1-1.연결리스트는 무엇일까? 위의 그림과 같이 연결리스트는 하나의 노드가 다음 노드의 주소를 저장하는 방식으로 값을 저장하는 선형 자료구조이다. 따라서 값의 삽입, 삭제의 수행시간이 배열 기반의 자료구조보다 빠르고, 읽기의 수행시간이 배열기반의 자료구조보다 오래걸린다. 1-2. 연결리스트 구현 public class ListNode { int number; ListNode node; ListNode top; public Li..

Java/STUDY HALLE 2020.12.07

[Java] GitHub Library 사용법

1. 자바에서 깃허브 의존성을 추가하는 방법 2. API를 사용하는 방법 https://github-api.kohsuke.org 위의 사이트에 접속해서 레퍼런스 문서를 읽어보면서 어떤 기능이 있는지 살펴보아야 한다. 많은 사람들이 사용하는 api가 아니기 때문에 구글링을 해도 결과물이 없다. 3. 요구사항 실현하기 Main.java import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.List; import java.util.stream.Collectors; public class Main { static final int NUM_OF_ISSUES = 18; s..

Java/STUDY HALLE 2020.12.06