Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 60 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

|-| |
| |-|
|-|-|
| |-|
|-| |
```
80 changes: 80 additions & 0 deletions src/main/java/kr/codesquad/Ladder.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
38 changes: 36 additions & 2 deletions src/main/java/kr/codesquad/Main.java
Original file line number Diff line number Diff line change
@@ -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("최대 사다리 높이는 몇 개인가요?");
}
}