문제 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 1 .같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원..
Programming
문제 KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털시계가 있다. 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다..
■ 개요 오늘은 간단한 학생 성적 프로그램을 만들어 보았다. 기능은 아래와 같다. 아래에 보면 빅데시말과 라운딩 모드를 사용하기 위해 임포트를 해주었다. import javax.print.attribute.standard.NumberUp; import java.math.BigDecimal; //빅데시말 import java.math.RoundingMode; // 빅데시말 올림 컨트롤을 위한 라운딩모드 public class StudentTest2 { public static void main(String[] args) { Stud stud = new Stud("KimKunhwi",new int[] {90,93,81,85,80}); int Number = stud.getMarkNumber(); //배열의 ..
■열거형 enum은 열거형(enumerated type) 즉, 서로 관련된 자료들을 번호를 매겨 관리하는 것을 뜻한다. 예를 들어 아래와 같은 것들을 열거형으로 만들 수 있다. 직업 : 기사, 궁수, 마법사, 힐러 등 한국지역 : 제주도, 경상도, 경기도 등 날씨 : 봄, 여름, 가을, 겨울 등 ■열거형의 정의 위에서 언급했 듯이 enum(열거형)은 서로 같은 개념을 가진 상수들의 집합이다. enum을 정의하는 방법은 아래와 같다. enum 열거형이름 { 상수명1, 상수명2, 상수명3} RPG게임의 직업을 예로 들어보자, RPG 게임의 직업을 열거형으로 선언하면 아래와 같다. enum RpgJob { KNIGHT, AHCHER, WIZARD, HEALER} //상수들은 대문자,소문자 모두 사용할 수 있지..
■ 제네릭 "Generic"의 사전적인 의미는 "일반적인" 이라는 의미를 가지고있다. 제네릭을 클래스내부에서 사용할 데이터 타입를 외부에서 파라미터 형태로 지정하면서 데이터 타입을 일반화 해준다. 제네릭 없이 객체의 여러 자료형을 받을 수 있드록 제작하려면 int, float, double등 모든 자료형의 클래스들을 각각 만들어 주어야한다. 제네릭은 클래스 및 인터페이스를 선언할 때 안에 타입 파라미터를 넣어 작성한다. //제네릭 선언방법 public class 클래스명 { ... } public interface 인터페이스명 { ... } 자주 사용하는 매개변수의 타입은 아래 표와 같다. 선언방법이 정해진 것은 아니지만, 일반적으로 대문자 알파벳 하나로 선언해준다. 타입인자 설명 Type Element..
■ 추상화 오늘은 객체지향 프로그래밍의 4가지 성질 중 하나에 해당하는 추상화에 대해서 서술하도록 하겠다. 여기서 우리는 "추상"의 사전적 의미를 먼저 생각해볼 필요가 있는데 추상의 사전적 의미는 "사물이나 표상을 어떠한 성질, 공통성, 본질에 착안하여 그것을 파악하는 것" 이라는 사전적 의미를 가지고 있다. 여기서 핵심적인 개념은 공통성과 본질을 추출하는 것 이다. 같은 맥락에서, 자바에서의 추상화는 객체의 공통적인 성질 또는 기능을 추출하여 정의하는 것을 의미한다. OOP(Object Oriented Programming) 의 개념 중 하나인 상속이 하위클래스를 정의하기 위해 상위클래스를 사용하는 것 이라고 한다면, 반대로 추상화는 하위클래스들의 공통적인 요소들을 추출해 상위클래스를 만드는 것 이라고..
■ 다형성 객체지향 프로그래밍의 기둥이자 객체지향 프로그래밍에서 가장 중요하다 할 수 있느 다형성에 대해서 알아보자. 다형성이란 하나의 객체가 여러가지 형태를 가질 수 있는 것을 의미한다. 다형성은 영어에서 "여러 개"를 의미하는 poly 와 "어떤 형태 또는 실체" 를 이야기 하는 morphism 의 합성어로 "여러가지 형태" 라는 의미를 담고있다. 자바에서의 다형성은 한 타입의 참조변수로 여러 타입의 객체를 참조 할 수 있도록 만드는 것을 의미한다. 좀 더 구체적으로 이야기 하자면 상속과 비슷하게 상위클래스에 속성을 하위 클래스에서 참조하는 것을 허용하는 것이다. 한가지 유의할 점은, 참조 변수가 사용할 수 있는 맴버의 개수는 실제 객체의 멤버의 개수보다 같거나 적어야 한다는 점이다. 앞선 상속파트에..
■클래스 앞서 우리는 객체에 대하여 "실재하는 모든 것" 또는 "사용할 수 있는 실체"라고 정의하였다. 클래스(Class)는 이러한 객체를 "정의된 클래스 (BluePrint)" 또는 "틀 (flame) "이라고 정의할 수 있다. 즉, 클래스는 객체를 생성하는 데 사용되며 생성된 객체는 클래스 안에서 설계한 그대로 생성된다. 클래스와 객체는 떼려야 뗄 수 없는 관계인 것이다. 여기서 꼭 짚고 넘어가야 할 부분 있다. 클래스는 단지 객체를 생성하는 하나의 틀이라는 것이다. 즉, 클래스는 객체 그 자체가 될 수 없다. 클래스와 객체는 제품의 설계도와 제품으로 비유할 수 있다. 우리의 실생활을 예로 들자면 자동차의 설계도가 자동차 그 자체일 수 없듯 클래스도 객체 그 자체가 될 수 없다는 말이 된다. 위 그림..
■ 객체지향 프로그래밍 잠시 눈을 돌려 주위를 살펴보자. 각자가 위치한 장소에 따라 여러 사물들과 물체가 보일 것이다. 이처럼 책상, 의자, 컴퓨터, 등등 우리가 주변에서 볼 수 있는 "모든 실재하는 어떤" 대상을 프로그래밍 언어에서는 객체(Object)라고 부른다. 객체 (Object) 는 앞서 예로든 사물뿐만이 아니라, 사람과 동물 심지어 미생물까지도 객채에 범주 안에 들 수 있다. 한마디로 객체는 우리가 보고 느끼고 인지할 수 있는 모든 것을 뜻 한다. 객체 지향 프로그래밍 (OOP, Object Oriented Programming) 의 개념은 모두 이 객체 (Object)에서 부터 시작한다. 객체지향 이론의 핵심 개념은 실제 세계는 이러한 객체들로 구성되어 있으며, 발생 하는 모든 사건들은 이 ..
■ 변수 변수란 ( Variable )? - 타입이 종류라면, 변수는 데이터의 저장 공간을 의미한다. - 예 ) String name1 = "헬로"; 에 사용한 name1 이 변수이다 - 변수를 사용하는 이유에는 다음과 같이 있다. - 메모리에 데이터의 저장 공간을 확보하기 위해. - 다른 개발자와 협업 시 데이터의 이름(변수명)을 붙여 소통한다. - 데이터를 재사용한다. ■ 변수의 선언과 할당. 자바 프로그램을 사전에 비유하면, 사전에 등록된 단어만 프로그램에서 사용할 수 있다. 만약 사전에 등록되지 않은 단어를 사용하려고 한다면, 직접 사전에 등록해 주어야 한다. 이를 변수를 선언하고 할당한다고 말한다. 즉, 변수를 선언하는 것은 데이터를 저장하기 위한 공간을 메모리상에 확보하는 것을 의미하며, 변수..
■ String 이란? 자바는 String 클래스를 사용해 문자열을 다룬다. String은 자바 내장 클래스로서 그 자체로 타입으로 사용 가능하며, 연관된 기능들을 묶을 수 있다. 다시 말해, String 클래스는 문자열 타입으로 사용되며, 문자열과 관련된 유용한 메서드들도 가지고 있다. ■ String 클래스 선언 기본적으로 String 타입은 ("")로 감싸진 문자열 타입이며, char의 배열을 의미한다. String 타읍의 선언과 저장은 다음과 같다. String 변수 변수 = "문자열"; // 문자열 리터럴 대입방식 String 변수 = "문자열" String 변수 = new String("문자열") //new 연산자를 사용해 객체를 생성하고 문자열을 대입 문자열은 다른 변수가 값을 저장하는 방식..
■ 타입이란? 컴퓨터는 데이터를 다룰 때, 그 데이터를 메모리에 임시로 기억해둔다. 이때, 컴퓨터는 데이터를 어떤 종류이고, 얼마만큼의 크기를 가지는지 알아야한다. 그래야 데이터를 온전히 보관할 수 있을 만큼의 메모리 공간을 확보할 수 있다. 이처럼 데이터의 종류와 크기를 결정짓는 것이 바로 데이터 타입이다. ■ 기본타입과 참조타입 자바의 타입은 실제 값을 의미하는 기본 타입( Primitive Type )과 어떤 값이 저장된 주소를 값으로 하는 참조 타입 (reference type), 두가지의 데이터 타입을 가지고 있다. 기본 타입( Primitive type ) 데이터의 실제값을 의미 정수타입( byte, short, int, long ), 실수타입 (float, double), 문자타입(char)..