본문 바로가기

분류 전체보기

(108)
2020.8.31일자 수업 : 첫 비대면 수업 일주일동안 학원이 폐쇄되더니 결국 비대면 수업이 시작됐다. 그것만으로도 같은 내용을 듣는데, 수업의 난이도가 훨씬 올라갔다. 제발 일주일만 하고, 다시 학원으로 돌아갈 수 있기를 바랄뿐이다. 실습 - 캡슐화 git/eomcs-java-project-2020/mini-pms-15 * 저번 수업에 한 것. 응집력을 높이기 위해 각 MemberHandler, ProjectHandler, BoardHandler, TaskHandler 클래스의 역할을 잘게 쪼개서 전문화시켰다. 즉 BoardHandler 클래스를 UI역할(BoardHandler)과 데이터를 처리하는 역할(BoardList)로 나눴다. 구체적인 구현 내용을 감추어 유지보수와 사용을 쉽게 해주는 문법이 캡슐화 이렇게 만들어진 것이 Board - 도메..
2020.9.2일자 수업 : 미니 프로젝트 실습 - Stack, Queue 실습 - LinkedList 적용 git/eomcs-java-project/src/mini-pms-19 이번에는 ArrayList 대신 LinkedList를 사용해보려고 한다. LinkedList의 장단점 각 항목들의 연결 고리를 수정하기만 하면 되므로 항목 삽입, 삭제에 걸리는 시간이 ArrayList보다 작다. 배열이 커질 때마다 가비지가 생기는 ArrayLIst에 비해 기존의 객체들을 유지하기 때문에 메모리 관리가 효율적이다. 어떤 항목을 조회할때 첫 항목부터 원하는 항목까지 모두 조회하는 과정을 거치므로 항목 조회에 걸리는 시간이 ArrayList보다 크다. 훈련 목표 ArrayList를 쓰던 것을 LinkedList로 대체한다. 1단계 : LinkedList를 사용하기 전에 저번에 실습한 Lin..
2020.9.1일자 수업 : CRUD 실습, 제네릭 실습 - CRUD 완성 git/eomcs-java-project-200/mini-pms-18 어제는 detail() 메서드를 구현하는 것까지 했다. 오늘은 update()와 delete()를 추가하여 CRUD를 완성한다. 훈련 목표 update()를 추가한다 delete()를 추가한다 1단계 : update()를 각 Handler 클래스에 추가한다. ProjectHandler와 TaskHandler의 유효한 회원 검사 과정도 함께 추가한다. public void update() { System.out.println("[회원 변경]"); int no = Prompt.inputInt("번호? "); Member member = findByNo(no); if (member == null) { System.ou..
리팩토링 2장 : 리팩토링의 원리 1장은 예제라도 있어서 힘겹게 소화했지만, 2장은 저명한 개발자의 경험을 통해서 리팩토링의 효과와 한계를 들여다보는 내용이기에, 나같은 초보자는 더 이해가 어려웠다. 구체적인 이야기들은 아니기에 아는 만큼 보이는 내용일거라고 생각한다. 나는 내가 이해하고 있는 것에 확신이 없어서 일단 책에 쓰인 내용 그대로를 옮겨 정리할 것이다. 리팩토링의 정의 소프트웨어를 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경하는 것 리팩토링은 단순히 코드를 깔끔하게 하기 위해 보다 효율적이고 통제된 방법을 제공한다. 중요한 점은 리팩토링은 소프트웨어를 더 쉽게 이해할 수 있도록 바꾸기 때문에 그 과정만으로 코드에 대한 더 깊은 이해를 돕는다. 이와 대조되는 것은 퍼포먼..
백준 1712번 - 손익분기점 문제월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.A, B, C가 주어졌을 때,..
백준 1011번 - Fly me to the Alpha Centauri 문제 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 ..
백준 2775번 - 부녀회장이 될테야 문제평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.입력첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k,..
백준 2869번 - 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 2 1 5 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 4 내 코드 이게 까다로운 점은 마음같아선 그냥 하루에 올라가는 길이 즉, up - down으로 목표 거리를 나눠주고 싶지만, 대부분의 경우, 마지막 날에는 낮에 올라가는 도중에 목표..