diff --git a/README.md b/README.md index ad6e6861..1dcf468a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,64 @@ -# Java Lotto +# Java Ladder -- Last Update: 2022-12-28 +- Last Update: 2023-03-06 -## 코드 리뷰 +## 학습 계획 -* [텍스트와 이미지로 살펴보는 코드스쿼드의 온라인 코드 리뷰 과정](https://github.com/code-squad/codesquad-docs/blob/master/codereview/README.md) +- PR 테스트 해보기 -* [동영상으로 살펴보는 코드스쿼드의 온라인 코드 리뷰 과정](https://youtube.com/watch?v=lFinZfu3QO0&si=EnSIkaIECMiOmarE) + +- 1단계 요구사항에 맞춰 무지성 구현하기 +- 학습 자료 공부 후 코드 다시 보기 + + +- 2단계 요구사항에 맞춰 리팩토링하기 +- 학습 자료 공부 후 포인트 집어보며 다시 보기 + + +- 3단계 요구사항에 맞춰 개선해보기 +- 학습 자료 공부 후 포인트 집어보며 다시 보기 + + +- 4단계 요구사항에 맞춰 리팩토링하기 +- 학습 자료 공부 후 포인트 집어보며 다시 보기 + + +## 1단계 + +- 목표 → 자바 개발환경, JDK11 기본 기능 학습, 자바 다루기, 클래스/객체/배열 사용 +- 알아둘 것 → 자바 언어, 타입/조건문/반복문, 2차원 배열, 클래스/객체,메서드 + + +- 기능 요구사항 + - 간단한 사다리 게임 + - n명의 사람, m개의 사다리 개수 입력하기 + - 사다리의 라인은 랜덤 값에 따라 있거나 없음 + - 사다리가 있으면 "-" 표시 + - 없으면 " "(공백문자) 표시 + - 양 옆에는 "|" 표시 + - 사다리 상태를 화면에 출력 + - 출력 시점엔 제약 없음 + + +- Github 브랜치 생성 및 PR 학습 + + +- 구현 요구사항 + - 메서드 크기 최대 10라인 이내 + - 메서드가 한 가지 일만 하도록 작게 만들기 + - 2차원 배열 이용 + + +- 예상결과 및 동작예시 +```markdown +참여할 사람은 몇 명인가요? +3 +최대 사다리 높이는 몇 개인가요? +5 + +|-| | +| |-| +|-|-| +| |-| +|-| | +``` \ No newline at end of file diff --git a/src/main/java/kr/codesquad/Ladder.java b/src/main/java/kr/codesquad/Ladder.java new file mode 100644 index 00000000..6496cee8 --- /dev/null +++ b/src/main/java/kr/codesquad/Ladder.java @@ -0,0 +1,80 @@ +package kr.codesquad; + +import java.util.Random; + +public class Ladder { + String[][] ladder; + + Ladder(int people, int height) { + this.ladder = new String[height][]; + for (int i = 0; i < height; i++) { + this.ladder[i] = makeLayer(people); + } + } + + + String[] makeLayer(int people) { + String[] Layer = new String[(people*2) - 1]; + for (int i = 0; i < (people*2) - 1; i++) { + Layer[i] = getLayer(i); + } + return Layer; + } + + + String getLayer(int i) { + if (i % 2 == 0) { + return "|"; + } + return getLadder(); + } + + + String getLadder() { + if (randomBoolean()) { + return "-"; + } + return " "; + } + + + void printLadder() { + for (String[] strings : ladder) { + printLayer(strings); + System.out.println(); + } + } + + private void printLayer(String[] strings) { + for (String string : strings) { + System.out.print(string); + } + } + + +// void printVerticalLine(int people, int Ladder) { +// for (int i = 0; i < Ladder; i++) { +// System.out.print("|"); +// printHorizontalLine(people); +// System.out.println(); +// } +// } +// +// +// private void printHorizontalLine(int people) { +// for (int i = 0; i < people; i++) { +// if (randomBoolean()) { +// System.out.print("-"); +// } else { +// System.out.print(" "); +// } +// System.out.print("|"); +// } +// } + + + private boolean randomBoolean() { + Random random = new Random(); + return random.nextBoolean(); + } +} diff --git a/src/main/java/kr/codesquad/Main.java b/src/main/java/kr/codesquad/Main.java index b5ec785b..8db215c9 100644 --- a/src/main/java/kr/codesquad/Main.java +++ b/src/main/java/kr/codesquad/Main.java @@ -1,7 +1,41 @@ package kr.codesquad; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); + public static void main(String[] args) throws IOException { + Main main = new Main(); + int people = main.inputPeople(); + int height = main.inputHeight(); + + Ladder ladder = new Ladder(people, height); + ladder.printLadder(); + + //new Ladder().printVerticalLine(n, m); + } + + private int inputPeople() throws IOException { + printInputPeople(); + return input(); + } + + private int inputHeight() throws IOException { + printInputHeight(); + return input(); + } + + private int input() throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + return Integer.parseInt(br.readLine()); + } + + private void printInputPeople() { + System.out.println("참여할 사람은 몇 명 인가요?"); + } + + private void printInputHeight() { + System.out.println("최대 사다리 높이는 몇 개인가요?"); } } \ No newline at end of file