### 소개 > "**책**은 몇 번 읽었는데.. 막상 **코딩**을 하려면 뭐 부터 해야할지 모르겠어요.." > "**객체지향 프로그래밍**이라는게 잘 이해가 잘 안됩니다.." > "자바를 배우면 **무얼 만들 수 있죠?**" ### 진행방향 + 문제를 주어주고, 이를 해결하기 위한 개념을 토의하며, 이를 바탕으로 실제 프로그램을 만듭니다. ### 목표 + 자바 기본문법을 숙지 + 객체지향 프로그래밍의 이해 + 객체지향적 프로그램 설계능력 향상 + 프로그램 구현 능력 증진 ### 교재 + [**MIT Introduction to Programming in Java**](https://goo.gl/Kl5I19) - Types, variables, operators - More types, methods, conditionals - Loops and arrays - Objects and classes - Access control, class scope, packages, Java API - Design, debugging, interfaces - Inheritance, exceptions, file I/O ### 시간 및 장소 + 매주 월,금 / 7시 - 9시 / 4주 + 신림역 통스토리 ![](https://www.dropbox.com/s/ibhv7no6cz4lydq/silim.png?dl=1) ### 인원 + 6 ~ 8명 ### 비용 + 8 만원 ### 연락처 + 이메일: [email protected] + 카 톡: chaesam
# 시, 분, 초 변환 사용자로 부터 초를 입력 받아, OO시 OO분 OO초로 변환하는 프로그램을 작성하시오. > 참조 링크: https://withcs.net/contest/1025/problem/0 ### 입력 예 ``` 2015 ``` ### 출력 예 ``` 2015초는 0시간 33분 35초 입니다. ```
# 각 자리 수의 합 정수N의 각 자리의 숫자들의 합계를 구하는 프로그램을 작성하세요. > 링크: https://withcs.net/contest/1025/problem/3 ### 입력 예 ``` 932 ``` ### 출력 예 ``` 14 ```
# BMI 지수 몸무게 W(pounds)와 키 H(inches)를 입력으로 받아 BMI지수를 구하는 프로그램을 작성하세요. > 링크: https://withcs.net/contest/1025/problem/4 ### 입력 예 ``` 95.5 50 ``` ### 출력 예 ``` 26.85 ```
# 나눗셈 연산 아래 코드의 결과를 예측하시오 ```java class Division { public static void main(String[] args) { int a = 2; double b = 2; int c = (int)10.4; double d = 2 / 3; double e = (double) 2 / 3; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); System.out.println("d = " + d); System.out.println("e = " + e); } } ```
# 변수의 스코프(scope) 아래 소스코드의 결과를 예측하시오. ```java public class VariablesScope2 { public static void method(int x) { System.out.println("method x = " + x); x = x * x; System.out.println("method x = " + x); } public static void main(String[] args) { int x = 5; System.out.println("main x = " + x); method(x); System.out.println("main x = " + x); } } ```
# 주사위 놀이 아래의 문제를 읽고 프로그램을 작성하시오. ### 개요 나는 주사위 도박에서 돈을 딸 수 있을까? 룰은 다음과 같다. 주사위를 던져 나온 눈의 수만큼 달라를 획득한다. 1회 참가비용은 3.6 달라이며, 현재 18달라를 가지고있는 상황. 총 5번을 참가하였을 때, 돈을 얼만큼 이득(또는 손해) 보았는지 원화 가치로 계산하시오. ### 요구사항 + Math.random() 메소드를 사용하여 1 과 6 사이의 숫자를 반환하는 dice() 메소드 구현. + 달라값을 입력하면 원화가치를 반환하는 exchange() 메소드를 구현. + 1 달라는 1200원으로 계산하며, 원화 가치 계산시 소수점 이하는 버린다. ### 스켈레톤코드 ``` class Dice { public static void main(String[] args) { // 코드를 구현하세요. } public static int dice() { return 0; } public static int exchange(double dollar) { return 0; } } ```
# 임금 계산 ### 개요 당신은 Java 기업의 사장이 되었습니다. 당신 회사의 직원들에게 지급할 임금을 계산하는 프로그램을 작성하시오. ### 요구사항 + 직원의 임금은 주급으로 정산하며, (근무시간) X (기본시급)을 기준으로 한다. + 주당 근무시간이 40시간을 초과시, 초과급여는 (초과시간) X (기본시급) X (1.5)으로 한다. + 기본시급은 최저 $8.00이며, 이보다 작을 경우 에러를 출력한다. + 주당 근무시간이 60시간을 초과하는 경우 에러를 출력한다. ### 스켈레톤 코드 ```java public class JavaCorporation { public static void printPay(double basePay, int hours) { // 메소드를 구현하세요.. } public static void main(String[] args) { printPay(7.50, 35); printPay(8.20, 47); printPay(10.00, 73); } } ```
# 고득점자 찾기 가장 높은 성적을 받은 학생의 이름과 점수를 출력하시오. ### 성적표 ``` Elena(65), Suzie(74), John(23), Emily(75), Neda(68), Kate(96), Alex(88), Daniel(98), Hamilton(54) ``` ### 예상출력 ``` 1등: Daniel(98) ``` ### 스켈레톤 코드 ```java public class TopScoreStudent { public static int topIndex(int[] scores) { /* 가장 높은 성적의 인덱스를 반환하는 함수를 구현하세요. */ return 0; } public static void main(String[] args) { String[] names = {/* 1. 이름을 배열로 만드세요. */}; int[] scores = {/* 2. 점수를 배열로 만드세요. */}; int i = topIndex(scores); System.out.printf("1등: %s(%d)\n", names[i], scores[i]); } } ```
# 전공과 학년 > 참조 링크: https://withcs.net/contest/1027/problem/4 ### 개요 전공과 학년을 의미하는 두개의 문자를 입력으로 받아 전공과 학년의 완벽한 이름을 출력하는 프로그램을 작성하세요. 첫번째 문자는 전공을 나타내며 아래 보이는 목록중 하나입니다. 두번째 문자는 학년을 나타내며 1부터 차례대로 Freshman, Sophomore, Junior, Senior로 표현하면 됩니다. + M: Mathematics + C: Computer Science + I: Information Technology ### 입력 예 ``` C3 ``` ### 출력 예 ``` Computer Science Junior ```
# 클래스 설계 및 구현 아래 예시 중 하나(또는 자유 주제)를 선정하여 클래스를 설계(design)하고 이를 소스코드로 구현(implements)하시오. ### 예시 + 스마트폰 + 체크카드 + 도어락 + 강아지 + 여자친구(남자친구)
# 격투 게임 ![](https://www.dropbox.com/s/4qlbscdst9f6kpw/0501.jpg?dl=1) ### 개요 두 캐릭터가 싸우는 격투 게임을 만드시오. ### 요구사항 + 캐릭터는 이름과 체력을 갖으며, 모든 캐릭터의 기본 체력은 100이다. + 캐릭터는 펀치를 통해 상대 캐릭터의 체력을 감소시킬 수 있다. + 격투는 1 vs 1 모드로 진행되며, 두 캐릭터중 하나의 체력이 모두 소진될때까지 진행된다.
# 도서 관리 프로그램 ### 상황설정 우리동네에는 두 개의 서점이 존재한다. 하나는 교본문고, 또 하나는 반지하루니스.. 그런데 어날, 두 서점 모두 도서관리 시스템이 필요하다며 나에게 찾아와 프로그램을 만들어 달라고 요청하였다. ### 요구사항 1. 서점(BookStore) 클래스를 설계 및 구현 하시오. - 서점은 이름과 주소정보를 지니고, 여러권의 책들을 가지고 있다. - 서점 클래스는 책을 등록/열람/수정/삭제 하는 기능을 할 수 있다. 2. 책(Book) 클래스를 설계 및 구현 하시오. - 책은 이름과 저자, 가격, 그리고 재고량에 대한 정보를 지니고 있다.
# 뒤집혀진 정수 ### 문제 정수 I를 입력받아 역순으로 출력하는 프로그램을 작성하세요. 예를 들어, reverse(3456)는 6543으로 출력되어야 합니다. 330은 033으로 출력되어야 합니다. ### 입력 예 ``` 22 3215 111011 ``` ### 출력 예 ``` 22 5123 110111 ``` ### 레퍼런스 + https://withcs.net/contest/1029/problem/1
# 개발자 연봉 ### 문제 개발자의 연봉을 계산하는 프로그램을 만드시오. ### 요구사항 개발자는 이름과 경력(년차)의 정보를 지니고, 경력에 따라 초급(3년미만) / 중급(7년 미만) / 고급(7년 이상)의 단계로 나뉘어진다. 연봉은 단계별로 기준 연봉이 존재한며 이는 아래와 같이 적용한다. + 초급: 2800만원 + 중급: 3500만원 + 고급: 4500만원 연봉을 구하는 공식은 아래와 같다. + 연봉 = 기준연봉 + (100 * 경력) ### 클래스 다이어그램 ![](https://www.dropbox.com/s/dccgspu2vq8huxf/dev-diagram.png?dl=1) ### 스켈레톤 코드 ```java public class Developer { // 1: 필드를 구현하세요. // 2: 생성자를 구현하세요. // 3: 메소드를 구현하세요. public static void main(String[] args) { Developer tom = new Developer("Tom", 2); Developer john = new Developer("John", 5); Developer sally = new Developer("Sally", 9); System.out.println(tom.salary()); System.out.println(john.salary()); System.out.println(sally.salary()); } } ``` ### 출력 예 ``` 3000 4000 5400 ```
# 연봉지출 계산 ### 문제 개발자들에게 지급하는 회사의 연봉지출금액을 계산하시오. ### 요구사항 + 회사는 이름과 여러명의 개발자를 갖는다. + 개발자는 이름과 경력(년차)정보를 갖는다. + 경력에 따라 개발자 등급이 나뉜다. - 초급: 3년 미만 - 중급: 7년 미만 - 고급: 7년 이상 + 개발자의 등급별로 기준 연봉이 존재한며 이는 아래와 같이 적용한다. - 초급: 2800 - 중급: 3500 - 고급: 4500 + 연봉을 구하는 공식은 아래와 같다. - 연봉 = 기준연봉 + (100 * 경력) ### 설계도 ![](https://www.dropbox.com/s/q5z4sr8howvts2w/assignment89.png?dl=1) ### 스켈레톤 코드 ```java public class JavaCorperation { // 1: 필드를 구현하세요. // 2: 생성자를 구현하세요. // 3: 메소드를 구현하세요. public static void main(String[] args) { JavaCorperation corp = new JavaCorperation("Oracle"); Developer john = new Developer("John", 4); Developer paul = new Developer("Paul", 5); Developer james = new Developer("James", 2); Developer elena = new Developer("Elena", 10); Developer kate = new Developer("Kate", 1); Developer[] members = { john, paul, james, elena, kate }; for (Developer d : members) corp.addDeveloper(d); System.out.println(corp.salaryExpenses()); } } ``` ### 결과 값 ``` 19300 ```