diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 861e217..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/level2.md b/level2.md index e69de29..01414dd 100644 --- a/level2.md +++ b/level2.md @@ -0,0 +1,41 @@ +## 실습 진행 방법 및 제출 방법 +* 실습은 자신이 가장 자신 있는 언어를 선택해 다음 문제를 구현한다. +* 실습 결과물은 [GitHub](https://github.com)를 통해 공유한다. + +## 숫자 야구게임 +#### 요구사항 +기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. + +같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 포볼 또는 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방의 수를 맞추면 승리한다. + +[예] 상대방의 수가 425일 때, 123을 제시한 경우 : 1 스트라이크 456을 제시한 경우 : 1 스트라이크 1볼 789를 제시한 경우 : 낫싱 + +위 숫자 야구게임에서 상대방의 역할을 컴퓨터가 한다. 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다. 게임 플레이어는 컴퓨터가 생각하고 있는 3개의 숫자를 입력하고, 컴퓨터는 입력한 숫자에 대한 결과를 출력한다. + +이 같은 과정을 반복해 컴퓨터가 선택한 3개의 숫자를 모두 맞히면 게임이 종료된다. + +게임 진행 결과는 다음과 같다. + +``` +숫자를 입력해주세요 ex)123 : 123 +1 스트라이크 1볼 +숫자를 입력해주세요 ex)123 : 145 +1볼 +숫자를 입력해주세요 ex)123 : 671 +2볼 +숫자를 입력해주세요 ex)123 : 216 +1 스트라이크 +숫자를 입력해주세요 ex)123 : 713 +3 스트라이크 +3개의 숫자를 모두 맞히셨습니다! 게임 종료 +``` + +#### 프로그래밍 구현 제약사항 +* 함수(또는 메소드)의 크기가 최대 10라인을 넘지 않도록 구현한다. +* 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들어라. +* indent(인덴트, 들여쓰기) depth를 최대한 작게 만들어라. depth가 1인 상태가 가장 좋다. + +#### 힌트 +* 컴퓨터가 3개의 값을 선택할 때 각 언어별 random 함수(또는 메소드) 또는 shuffle 함수(또는 메소드)를 이용하면 편한다. +* 반복문을 2중(반복문 안의 반복문)으로 사용하면 한번에 고려할 부분이 많다. 2중 반복문을 1중 반복문 2개로 나누어 처리하는 방법은 없는지 고려해 본다. +* depth를 줄이는 좋은 방법은 함수(또는 메소드)를 분리하면 된다. \ No newline at end of file diff --git a/webbackend-java/level3.md b/webbackend-java/level3.md index e69de29..13c78ef 100644 --- a/webbackend-java/level3.md +++ b/webbackend-java/level3.md @@ -0,0 +1,58 @@ +## 실습 진행 방법 및 제출 방법 +* 실습은 java 언어를 사용해 다음 문제를 해결해야 한다. +* 실습 결과물은 [GitHub](https://github.com)를 통해 공유한다. + +## 볼링게임 점수판 +볼링 점수를 계산하는 프로그램을 구현한다. + +* 볼링 게임의 점수 계산 방식 아는 사람은 바로 구현을 시작한다. +* 점수 계산 방식을 모르는 사람은 구글에서 "볼링 점수 계산법"과 같은 키워드로 검색해 볼링 게임의 점수 계산 방식을 학습한 후 구현을 시작한다. + +볼링 게임 실행 결과는 다음과 같다. + +``` +플레이어 이름은(3 english letters)?: PJS +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | | | | | | | | | | | +| | | | | | | | | | | | + +PJS's turn : 10 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | | | | | | | | | | +| | | | | | | | | | | | + +PJS's turn : 8 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8 | | | | | | | | | +| | | | | | | | | | | | + +PJS's turn : 2 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8|/ | | | | | | | | | +| | 20 | | | | | | | | | | + +PJS's turn : 7 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8|/ | 7 | | | | | | | | +| | 20 | 37 | | | | | | | | | + +PJS's turn : 0 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8|/ | 7|- | | | | | | | | +| | 20 | 37 | 44 | | | | | | | | + +PJS's turn : 10 + +... +``` + +#### 프로그래밍 제약 사항 +* 객체 지향 설계 기반 개발이 가능하도록 구현한다. +* 상속을 사용해 구현해야 한다. 예를 들어 1 ~ 9 프레임과 10 프레임의 동작 방식이 다른데 이 부분을 상속을 통해 해결해 본다. +* 배열 대신 java의 collection(List, Map 등)을 사용해 구현해야 한다. +* 중요한 로직에 대한 소스 코드는 junit 기반의 단위 테스트가 존재해야 한다. +* indent(인덴트, 들여쓰기) depth를 2단계에서 1단계로 줄여라. + * depth의 경우 if문을 사용하는 경우 1단계의 depth가 증가한다. if문 안에 while문을 사용한다면 depth가 2단계가 된다. +* else를 사용하지 마라. +* 메소드의 크기가 최대 10라인을 넘지 않도록 구현한다. + * method가 한 가지 일만 하도록 최대한 작게 만들어라. \ No newline at end of file diff --git a/webbackend-java/level4.md b/webbackend-java/level4.md index e69de29..5a21656 100644 --- a/webbackend-java/level4.md +++ b/webbackend-java/level4.md @@ -0,0 +1,83 @@ +## 실습 진행 방법 및 제출 방법 +* 실습은 java 언어 기반의 웹 프레임워크를 활용해 다음 문제를 해결해야 한다. +* MVC 패턴 기반으로 개발해야 한다. +* 실습 결과물은 [GitHub](https://github.com)를 통해 공유한다. + +## 볼링게임 점수판 +볼링 점수를 계산하는 프로그램을 구현한다. + +* 볼링 게임의 점수 계산 방식 아는 사람은 바로 구현을 시작한다. +* 점수 계산 방식을 모르는 사람은 구글에서 "볼링 점수 계산법"과 같은 키워드로 검색해 볼링 게임의 점수 계산 방식을 학습한 후 구현을 시작한다. + +#### 요구사항 +* 1명 이상 사용자의 볼링 게임 점수를 관리할 수 있는 프로그램을 구현한다. +* 콘솔 화면에서 볼링 게임 실행 결과는 다음과 같다. **콘솔 화면의 UI를 웹 UI 기반으로 동작하도록 구현해야 한다.** +* 사용자가 잘못된 값을 입력했을 때는 에러 메시지를 사용자에게 보여줘야 한다. + +``` +How many people? 2 +플레이어 1의 이름은?(3 english letters): PJS +플레이어 2의 이름은?(3 english letters): KYJ +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | | | | | | | | | | | +| | | | | | | | | | | | +| KYJ | | | | | | | | | | | +| | | | | | | | | | | | + +PJS's turn : 10 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | | | | | | | | | | +| | | | | | | | | | | | +| KYJ | | | | | | | | | | | +| | | | | | | | | | | | + +KYJ's turn : 8 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | | | | | | | | | | +| | | | | | | | | | | | +| KYJ | 8 | | | | | | | | | | +| | | | | | | | | | | | + +KYJ's turn : 2 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | | | | | | | | | | +| | | | | | | | | | | | +| KYJ | 8|/ | | | | | | | | | | +| | | | | | | | | | | | + +PJS's turn : 8 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8 | | | | | | | | | +| | | | | | | | | | | | +| KYJ | 8|/ | | | | | | | | | | +| | | | | | | | | | | | + +PJS's turn : 2 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8|/ | | | | | | | | | +| | 20 | | | | | | | | | | +| KYJ | 8|/ | | | | | | | | | | +| | | | | | | | | | | | + +KYJ's turn : 10 +| NAME | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | +| PJS | X | 8|/ | | | | | | | | | +| | 20 | | | | | | | | | | +| KYJ | 8|/ | X | | | | | | | | | +| | 20 | | | | | | | | | | + +PJS's turn : + +... +``` + +#### 프로그래밍 제약 사항 +* 객체 지향 설계 기반 개발이 가능하도록 구현한다. +* 상속을 사용해 구현해야 한다. 예를 들어 1 ~ 9 프레임과 10 프레임의 동작 방식이 다른데 이 부분을 상속을 통해 해결해 본다. +* 배열 대신 java의 collection(List, Map 등)을 사용해 구현해야 한다. +* 모든 소스 코드는 junit 기반의 단위 테스트가 존재해야 한다.(controller 코드는 제외) +* indent(인덴트, 들여쓰기) depth를 2단계에서 1단계로 줄여라. + * depth의 경우 if문을 사용하는 경우 1단계의 depth가 증가한다. if문 안에 while문을 사용한다면 depth가 2단계가 된다. +* else를 사용하지 마라. +* 메소드의 크기가 최대 10라인을 넘지 않도록 구현한다. + * method가 한 가지 일만 하도록 최대한 작게 만들어라.