
시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 22843 6129 3657 28.573% 문제 외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문제 중 하나이다. 여러 가지 변종 문제가 있으나, 여기서는 가장 일반적인 형태의 문제를 살펴보자. 1번부터 N번까지 번호가 매겨져 있는 도시들이 있고, 도시들 사이에는 길이 있다. (길이 없을 수도 있다) 이제 한 외판원이 어느 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획하려고 한다. 단, 한 번 갔던 도시로는 다시 갈 수 없다. (맨 마지막에 여행을 출발했던 도시..

package 키워드 클래스를 모아둔 폴더 자바에서 패키지는 비슷한 성격을 가진 자바 클래스들을 한군데 모아놓은 디렉토리의 개념으로 사용된다. 단, 자바 클래스를 모아놓은 디렉토리이지 일반 디렉토리와는 다른 기능을 제공한다. 같은 이름의 클래스를 선언하더라도 구분지어서 사용할 수 있다. 비슷한 기능의 클래스를 묶어서 보관하여 편리하게 관리할 수 있다. 같은 패키지내에서는 같은 클래스명을 사용할 수 없지만 다른 패키지내에 있다면 클래스 선언이 가능하다. 바뀐건 경로뿐인거 같은데 구분이 되는 이유는 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지도 마찬가지로 물리적으로 하나의 디렉토리로 정해져있기 때문이다. 따라서 개별적인 패키지 체계를 만듦으로써 따로 개발된 클래스 라이브러리이더라도..

웹 서버(Web Server), 웹 어플리케이션 서버(WAS) 네트워크 환경에서 모든 것은 Http 프로토콜 기반으로 데이터(메시지)를 전달하게 된다. 서버 간에 데이터를 주고받을 때도 대부분 Http를 사용을 하는데 웹 서버들이 어떤 방식으로 Http를 사용하는지 알아보고자 한다. Web Server Http 기반으로 동작하며 정적 리소스를 제공한다. 정적 리소스란 Html, Css, Js, 이미지 등과 같이 정적인 파일을 제공하는 역할을 하며 NGINX, APACHE등과 같은 웹 서버들이 있다. Web Application Server 흔히 WAS로 축약해서 말하는 웹 어플리케이션 서버이다. 웹서버와 마찬가지로 Http 기반으로 동작을 하지만 프로그램 코드를 실행해서 어플리케이션 로직을 수행한다는 차..

이 고민은 부모클래스에 static이 붙어있었을 때 왜 자식 클래스에서 이를 왜 Overriding 못 하는가?에 대한 궁금증에서부터 시작되었다. 인스턴스 메소드의 상속 사전지식으로 보아야할 Dynamic Method Dispatch 예를 보자. package Week6; public class Exam4{ public static void main(String[] args) { Parent parent1 = new Parent(); Parent parent2 = new Child(); Child child = new Child(); parent1.getTest(); parent2.getTest(); child.getTest(); } } class Parent { void getTest() { Syste..
왜? 자바를 공부하면 For문을 먼저 배우게되고 For문을 배우면 따라나오는 것이 For Each문이다. 한국어로 이를 표현했을 때 "향상된 For문"이라는 말이 많이 나오는데 정말 향상되었는가에 대한 궁금증으로 인해 확인해보기로 했다. 테스트는 List안에 10000건의 값을 넣고 1로 초기화하는 것으로 진행하였다. public static long testFor(List list, long runTime){ int size = list.size(); long result = 0; long runTimeTmp = runTime; while(0 < runTimeTmp--){ long start = System.nanoTime(); for(int i=0; i index; i--) x = x.prev; re..
자바 상속의 특징 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속은 그 단어의 뜻과 마찬가지로 부모 클래스를 자손 클래스에 변수와 메소드를 물려주는 것을 말한다. 지금의 상속은 class와 class 간의 상속에 대해서 이야기 할 것이므로 Interface와 implement는 다음 포스팅에서 이야기할 예정이다. 간단하게 맛만 먼저 보자. class Parent{ private String name; private int money = 30; public int getMoney() { return money; } } class Child extends Parent { private String name; private int money; public Child(int mone..

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 512 MB 237 74 33 20.625% 문제 N 개의 광물이 있다. i 번째 광물은 (Xi , Yi )에 있으며 캐내는 비용은 1이고, 이것의 아름다운 정도는 Vi 이다. 호석이는 지금 (0, 0)에 있다. 타고난 광부인 호석이는 시그니쳐 스킬인 "광산 뒤집기"를 쓰려고 한다. 이 스킬을 쓰면 자신이 있는 위치를 꼭지점으로 하며, 원하는 높이 H(H ≥ 0), 너비 W(W ≥ 0) 인 직사각형 영역 안에 있는 모든 광물을 캘 수 있다. 영역의 테두리에 존재하는 광물도 캐야한다. 주의할 점은, 직사각형 영역 안에 들어오는 광물은 무조건 캐야 하며, 영역에 속한 광물들의 캐내는 비용의 총합이 현재 가진 돈 C 보다 크면 파산을 하게 된다. ..
클래스 정의하는 방법 객체 지향 프로그래밍(OOP, Object-Oriented Programming) 모든 데이터를 객체(Object)로 취급하며 이 객체를 중심으로 돌아가는 프로그래밍을 말한다. 객체란 단순히 우리가 인식할 수 있는 사물을 말한다. Class(클래스) 클래스란 "객체를 정의해놓은 것", "객체의 설계도 또는 틀"로 정의할 수 있다. 자바는 클래스를 가지고 필요한 객체를 생성해서 사용한다. 자바에서 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method), 생성자(constructor)로 구성된다. 즉 필드에는 클래스에 포함된 변수가 이에 해당하고, 클래스 내에 있는 모든 명령어들이 메소드에 해당된다. package Week5; public cla..
- Total
- Today
- Yesterday