2020-12-04 (제네릭의 기초적인 개념과 기존 예제가 궁금하면, 아래 링크로 가서 확인하고 오자.) seeminglyjs.tistory.com/184 제네릭에는 다양한 타입들이 들어갈 수 있지만, 특정 경우에는 제네릭에 들어갈 타입을 제한시켜야 하는 경우가 있다. 예를 들자면 어떤 클래스 필드에 age(나이)라는 변수가 있다고 가정해 보자. 이러한 경우에는 해당 제네릭 타입을 숫자로 받아야 하기 때문에 Integer / short / double...과 같은 숫자형 타입으로 한정 지을 수 있다. 이를 제한된 타입 파라미터라고 한다. 그러면 이제 구체적인 코드를 살펴보도록 하자. package Generic1; public class man2{ public static int compareAge(T ..
2020-12-02 문제 유명한 피타고라스의 정리와 유사한 형태의 피타고라스 기댓값 (Pythagorean Expectation)이 야구와 같은 스포츠 경기에 자주 사용된다. 피타고라스 기댓값은 빌 제임스(Bill James)에 의해 정의되었으며, 이 값은 특정 야구팀이 한 시즌 동안 얼마나 잘 했는지를 평가하는 지표 중 하나로 사용된다. 한 야구팀의 피타고라스 기댓값 W는 아래 식과 같이 정의된다. 여기서 S는 해당 팀의 총 득점 수를, A는 해당 팀의 총 실점 수를 나타낸다. 이 기댓값을 실제 승률과 비교하여, 해당 팀이 한 시즌을 얼마나 잘 보냈는지 평가할 수 있다. 예를 들어, 한화 이글스는 2014 시즌에 619 득점과 889 실점을 했다. 즉, S = 619, A = 889이 되어, 한화 팀의..
2020-12-01 인터페이스는 자바에서의 다형성을 실현하기 위해 객체의 교환성을 높여주는 역할을 한다. 선언 방법으로는 아래와 같이 New -> Interface를 선택해서 간단히 생성할 수 있다. 인터페이스의 특징으로는 상수와 메소드만 선언 가능하며, 생성자를 가질 수 없다. 또한 메서드는 추상 메서드 / 정적 메서드 / 디폴트 메서드 3가지 종류로 나누어진다. 이 중에서 추상 메서드를 사용하려면, 이를 구현하는 구현 클래스가 따로 필요하다.(위의 인터페이스는 추상 메서드 2개를 선언해 두었다.) 아래는 구현 클래스에 대한 내용이다. package interfacePractice; public class move implements arm1, arm2, body{ // 구현하는 모든 인터페이스의 추상..
2020-11-30 문제 "럭키스톤"은 카드를 통해 대결하는 게임이다. 창식이는 럭키스톤을 자주 한다. 이 게임의 카드에는 공격력과 생명력이 표시되어있다. 왼쪽에는 공격력이, 오른쪽에는 생명력이 숫자로 적혀있다. 서로 꺼낸 카드를 비교하여 남길 카드를 결정하는 데, 카드의 비교는 다음과 같이 이루어진다. 비교하는 카드의 공격력만큼 동시에 서로 상대 카드의 생명력을 깎는다. 줄어든 생명력은 다시 회복되지 않는다. 생명력이 0 이하인 경우에는 카드는 죽은 상태로 전환된다. 카드가 두 장 모두 남아있다면 비교를 계속한다. 요즘 따라 게임이 안 풀리는 창식이는 대전 전에 가능한 수를 미리 계산하여 최대한 이득을 챙기고 싶어 한다. 카드 2개의 공격력과 생명력이 주어지면 어떤 플레이어의 카드가 남아있을지 출력하는..
2020-11-29 문제 창영 마을의 우체부, 우유배달원, 신문배달원은 상근이네 집에 가는 것을 매우 싫어한다. 그 이유는 상근이네 집에는 사나운 개 두 마리가 지키고 있기 때문이다. 하지만, 그들은 이 개의 행동이 예측 가능하다는 것을 모르고 있다. 매일 아침, 개 한마리는 A분동안 공격적이고, B분동안 조용히 쉬고 있다. 또다른 개는 C분동안 공격적이고, D분동안 조용히 쉰다. 두 개는 이 행동을 계속해서 연속적으로 반복한다. 우체부, 신문배달원, 우유배달원의 도착 시간이 주어졌을 때, 개 몇 마리에게 공격을 받는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C, D가 주어진다. 둘째 줄에는 P, M, N가 주어진다. P는 우체부의 도착 시간, M은 우유배달원의 도착 시간, N은 신문..
2020-11-28 상속 : 현실세계에서는 부모의 재산을 자식이 물려받는 뜻으로 쓰이고는 한다. 자바에서도 그 의미가 크게 다르지 않는데, 한 번 알아보도록 하자. 자바에서의 상속은 부모 클래스의 멤버(필드, 메서드)를 자식 클래스가 상속받아 그대로 사용할 수 있다. (다만 상속 시 부모 클래스에서 private 접근 제한을 갖는 필드와 메서드는 상속이 이루어지지 않는다.) 아래 코드를 살펴보자. package Family상속; public class parent { String name; int age; parent(String name, int age){ this.name = name; this.age = age; } void info(){ System.out.println("저의 이름은 " + na..