분류 전체보기 (108) 썸네일형 리스트형 백준 2839번 - 설탕 배달 문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)18출력상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N.. 자바로 배우는 핵심 자료구조와 알고리즘 : 2장 알고리즘 분석 그렇다면 언제 ArrayList와 LinkedList 중 어떤 것을 사용하는 것이 더 좋은 선택일까? 어떤 프로그램에 어떤 클래스를 사용하는 것이 더 좋을 지 결정할 때 두 경우의 효율성을 계산하기 위해서 두 가지 방법을 사용할 수 있다. 1. 프로파일링 (Profiling) 둘 다 시도해보고 각각 얼마나 걸리는 지 확인 단점 ! 둘 다 구현해봐야한다. 결과가 사용하는 컴퓨터의 성능에 의존한다. 결과가 문제 크기나 입력으로 사용하는 데이터에 의존한다. 2. 알고리즘 분석 (Analysis of algoritms) 구현하지 않고 알고리즘을 비교하는 방법 첫번째 가정 - 하드웨어의 세부사항을 다루지 않기 위해 알고리즘을 이루는 기본 연산을 식별하여 알고리즘에 필요한 연산 수를 센다. 두번째 가정 - 입력 데.. 리팩토링 : 1장 조건문을 다형성으로 바꾸기 조건문을 다형성으로 바꾸기 Refactoring/src/main/java com.heejin.ex01_2 저번에는 htmlStatement와 같이 같은 기능을 하는 다른 메서드를 만들 때 기존 코드를 재사용할 수 있도록, 그리고 변경사항이 생기더라도 여러 메서드가 아니라 한 메서드만 고칠 수 있도록 statement 메서드의 여러 기능을 다양한 메서드로 분해했다. 이번에는 영화 분류법, 그리고 이에 따른 요금과 포인트 할당법을 쉽게 바꿀 수 있도록 리팩토링을 해볼 것이다. Rental의 getCharge() 메서드를 Movie 클래스로 옮기기 Why?? 메서드가 priceCode라는 Movie클래스의 변수를 주로 사용하고 있기 때문 Movie의 종류가 앞으로의 주 변경사항이기 때문에 그 변화의 파장을 최.. 리팩토링 : 1장 첫 번째 예제 - 메서드의 분해 및 재분배 1장의 전체적인 내용 : 1장에서는 흔한 디자인 상의 결점을 갖고 있는 작은 프로그램을 갖고 리팩토링을 해서 만족할 만한 수준의 객체 지향 프로그램으로 만드는 과정을 그린다. 우리는 이 과정에서 리팩토링의 프로세스와 몇가지 유용한 리팩토링을 적용하는 것을 본다. 이를 통해 리팩토링이란 무엇인가를 어느정도 이해할 수 있게 한다. 예제 - 비디오 가게에서 고객이 어떤 영화를 얼마나 오랫동안 빌렸는 지 보여주고 이 영화의 종류와 대여기간에 따라 요금을 계산하는 프로그램 영화의 종류는 보통, 어린이용, 최신 이렇게 세 가지 종류로 나뉜다. Movie package com.heejin.ex01; public class Movie { public static final int CHILDREN = 2; public .. 자바로 배우는 핵심 자료구조와 알고리즘 : 1장 인터페이스 내가 공부하고 있는 것에 비해 많이 이르지만 이 책을 공부해보려고 한다. http://www.yes24.com/Product/Goods/61198657 자바로 배우는 핵심 자료구조와 알고리즘 자료구조와 알고리즘을 활용하여 간단한 웹 검색 엔진 만들기이 책은 컴퓨터과학을 공부하거나 기술 인터뷰를 준비하는 소프트웨어 개발자를 위한 실용적인 책입니다. 자료구조와 알고리즘을 www.yes24.com 1.1. 리스트가 두 종류인 이유 자바의 List 인터페이스에는 ArrayList와 LinkedList 두 가지 리스트의 구현을 제공했다. 그 이유는 무엇이며, 어떤 때에 어느 것을 선택해야할지에 대한 답을 찾을 것이다. 이를 위해서 이들의 동작 방법과 장단점을 배울 것이다. 1.2. 자바 interface 자바의 .. 2020.8.18일자 수업 : Stack, Queue, 클래스 관계 *프로그램 설계 언어 internalization(I18N) - 프로그래밍 중에 라벨의 언어를 다양하게 하여 이용자에 적합한 언어를 제공 localization(L10N) - 이미 구현된 프로그램 안에서 라벨의 언어를 지역에 맞게 변경 실습 - Queue 구현하기 git/ bitcamp-20200713/ bitcamp-java-basic/ src/ main/java com.eomcs.algoritm.queue.MyQueue01~04.java Queue 를 구현하기위해 기존에 작성한 MyLinkedList를 상속받고 값을 정의하는 offer(Object)와 제일 앞에 있는 값을 꺼내는 poll(), 그리고 제일 앞에 있는 값을 조회하는 peek()을 정의한다. package com.eomcs.corelib.. 2020.8.13일자 수업 : Object 클래스 추상화 Actor : 시스템이 동작하게 만드는 촉발점. UML 업무를 컴퓨터를 통해서 다룬다면 컴퓨터에게 명령을 내리는 어플리케이션이 필요하다. 어플리케이션을 사용하는 주체를 Actor라고 하는데 이 주체에 사람만 있는 것은 아니다. 시스템도 시스템을 사용할 수 있고, 타이머가 특정 시간에만 동작을 촉발시킬 수도 있다. Actor의 종류에는 사람과 시스템, 타이머가 있다. 이 세가지가 원하는 것에 맞춰 시스템을 구현해야한다. 이 시스템을 통해 이뤄져야할 업무는 사람과 사물, 개념을 다룬다. 개념은 추상적인 것으로 쇼핑몰 사이트의 장바구니와 같은 것이다. 프로그램을 구현하려면 사람, 사물, 개념에 관련된 데이터(Member)와 내부 업무 행위(MemberHandler)를 클래스로 정의해야한다. 클래스로 정.. 2020.8.19일자 수업 : 미니프로젝트 * 한 클래스가 다른 클래스를 사용하는 것은 좋으나 두 클래스가 서로를 사용하면 안된다. 한쪽이 컴파일되면 다른 쪽이 컴파일되고 그쪽이 컴파일 되는 순간 다시 사용되는 쪽이 컴파일되기 때문에 무한 컴파일이 일어나기 때문이다. 물론 요즘은 컴파일러가 똑똑해서 무한으로 일어나지는 않는다. 실습 - 스태틱 멤버의 한계 / 인스턴스 멤버 활용 실습 목표: BoardHandler 클래스 만들고, board 클래스와, add() 메서드, list() 메서드 구현한다. 그리고 각 게시판과 멤버, 작업, 프로젝트의 종류를 여러개를 만든다. list1 -> /board1/add -> /board1/list list2 -> /board2/add -> /boaord2/list list3 -> /board3/add -> /b.. 이전 1 ··· 8 9 10 11 12 13 14 다음