- 사다리 게임 게임 요구사항을 파악한다.
- 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
- 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
- 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.
- 람다실습1: 익명 클래스를 람다로 전환
- 람다실습2: 람다를 활용해 중복 제거
- map, reduce, filter 실습 1 : sumOverThreeAndDouble()
- map, reduce, filter 실습 2 : printLongestWordTop100()
- Optional 1: 조건에 따른 반환
- Optional 2: 값을 반환
- Optional 3: exception 처리
- 사다리 예시
<<출력>>
pobi honux crong jk
|-----| |-----|
| |-----| |
|-----| | |
| |-----| |
|-----| |-----|
<<단순화-전체>> || <<단순화-가로만>>
a b c d ||
0 1 1 1 0 1 1 1 || 0 1 0 1
0 1 0 1 1 1 0 1 || 0 0 1 0
0 1 1 1 0 1 0 1 || 0 1 0 0
0 1 0 1 1 1 0 1 || 0 0 1 0
0 1 1 1 0 1 0 1 || 0 1 0 1
-
피드백 반영
-
입력값
- 이름
- 빈칸, null 안됨.
- 최대 5자
- 구분자 :
,
- 사다리 높이
- 빈칸, null 안됨.
- number 체크 : 숫자형인지 | 양수(>0)인지
- 이름
-
사다리 만들기
-
요구사항 : 사다리 타기가 정상적으로 동작하려면 라인이 겹치지 않도록 해야 한다.
-
사다리 한 줄 구현하기
- Bridge : 사다리 한 줄의 한 칸
- 왼쪽 값에 따라 0/1 결정된다.(0 -> 0,1 / 1 -> 0)
- Strategy에 따라 결정된다
- 첫번째 값은 항상 0이다.
- 왼쪽 값에 따라 0/1 결정된다.(0 -> 0,1 / 1 -> 0)
- Line : 사다리 한 줄
- 참가자의 수 만큼 칸이 생성된다(Bridge 생성)
- Bridge 생성 시 Strategy 주입
- Bridge : 사다리 한 줄의 한 칸
-
-
출력
- 사람 이름을 5자 기준으로 출력하기 때문에 사다리 폭도 넓어져야 한다.
- 폭에 맞춰 연결된 칸/안된 칸 출력
-
피드백 반영
- LadderTest 통과시키기
- 람다 체이닝 가독성 높이기
- 변수선언 순서: 상수 -> 인스턴스 변수 순
- line seperator 쓰기 (
\n
대신)
-
요구사항
- 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
- 실행결과 입력
- 참여자 개인이름 + all 입력시 결과 출력
-
실행결과 입력
- 입력받기 & validation 👉
Names
클래스 재사용 -결과보기 - 참가자 1인 결과 찾기
- 현재 마지막 값에 대해서 IndexOutOfBoundsException 해결.
- 참가자 전체 결과 찾기
- 예약어 all. -> 참가자 이름에서 all 제외시키기
- 👀 고민해볼 사항:
Bridge에서Line move()
에 필요한 index 값을 추출하는 메서드, curHasConnected(현재의 hasConnected), nextHasConnected을 추가하면 값 찾기가 수월할듯..? => hasConnected 값을 연속적으로 놓아야한다는 점이 까다로움🤔
- 입력받기 & validation 👉
- 피드백 반영
- LadderView 이동하기👉 LadderResult로 명칭 변경,
domain.game
으로 이동 - Line
move(int)
가독성 높이기 -> 메서드 분리 - Names 메서드 범용성 있게 변경
- LadderView 이동하기👉 LadderResult로 명칭 변경,
추가 구현
- Width는 line이 아니라 Ladder의 특징
- 예외처리: 사다리 실행결과를 보고자 하는 이름이 참가자 명단에 없을 때
- LadderManager 추가: 사다리 만들기, 사다리전체 조합, 결과를 한번에 만들어주는 객체
- 객체 최소한도로 만들기_Width
- 예외처리:
- 참가자와 실행결과 값의 크기가 일치해야 함.
- Names 예외처리. 최소입력이 2명이어야 함.