8000 GitHub - hiblue02/java-ladder at step04
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

hiblue02/java-ladder

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

사다리 게임

진행 방법

  • 사다리 게임 게임 요구사항을 파악한다.
  • 요구사항에 대한 구현을 완료한 후 자신의 github 아이디에 해당하는 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
  • 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 PUSH한다.
  • 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다.

온라인 코드 리뷰 과정

람다, 스트림, Optional

기능 및 프로그래밍 요구사항

  • CarTest의 익명 클래스를 람다로 전환한다.
  • Lambda의 sumAll, sumAllEven, sumAllOverThree의 중복을 람다를 사용해 제거한다.
    • List의 담긴 값 중 3보다 큰 수만을 더해야 한다.
    • 변경되는 부분과, 변경되지 않는 부분의 코드를 분리한다.
    • 변경되는 부분을 인터페이스로 추출하고, 구현체를 람다를 사용해 익명 클래스로 구현한다.
  • StreamStudyTest에서 map, reduce, filter를 실습한다.
    • countWords를 filter로 구현한다.
    • sumOverThreeAndDouble() 메서드를 구현한다.
      • List에 담긴 모든 숫자 중 3보다 큰 숫자를 2배한 후 총합을 구한다.
    • printLongestWordTop100() 메서드를 구현한다.
      • 단어의 길이가 12자를 초과하는 단어를 추출한다.
      • 12자가 넘는 단어 중 길이가 긴 순서로 100개의 단어를 추출한다.
      • 단어 중복을 허용하지 않는다. 즉, 서로 다른 단어 100개를 추출해야 한다.
      • 추출한 100개의 단어를 출력한다. 모든 단어는 소문자로 출력해야 한다.
  • Optional
    • Optional을 사용해 ageIsInRange2()를 구현한다.
      • User의 ageIsInRange1() 메소드는 30살 이상, 45살 이하에 해당하는 User가 존재하는 경우 true를 반환하는 메소드이다.
      • 메소드 인자로 받은 User를 Optional로 생성하면 stream의 map, filter와 같은 메소드를 사용하는 것이 가능하다.
      • Optional.ofNullable(user)을 활용해 User을 Optional로 생성하는 것이 가능하다.
      • Optional의 map(), filter() 메소드등을 활용해 필요한 데이터를 추출
      • Optional의 isPresent() 메소드 활용
    • Users의 getUser() 메소드를 자바 8의 stream과 Optional을 활용해 구현한다.
      • Optional의 orElse() 메소드 활용해 구현한다.
    • Expression의 of 메소드를 Stream을 사용해 구현한다.
      • Optional의 orElseThrow() 메소드 활용해 구현한다.
      • 일치하는 값 하나를 추출할 때 findFirst() 메소드를 활용 가능하다.
    • UserTest의 테스트가 모두 pass해야 한다.

사다리타기

기능 요구사항

  • 게임에 참여할 사람 이름을 입력받는다.
    • ex) 참여할 사람 이름을 입력하세요. (이름은 쉼표(,)로 구분하세요) pobi,honux,crong,jk
    • 사람 이름은 쉼표(,)를 기준으로 구분한다.
    • 사다리 게임에 참여하는 사람에 이름을 최대5글자까지 부여할 수 있다.
  • 최대 사다리 높이를 입력받는다. ex) 최대 사다리 높이는 몇 개인가요?
  • 실행결과를 출력한다.
    • 사다리를 출력할 때 사람 이름도 같이 출력한다.
    • 사람 이름을 5자 기준으로 출력하기 때문에 사다리 폭도 넓어져야 한다.
    • 사다리 타기가 정상적으로 동작하려면 라인이 겹치지 않도록 해야 한다.
      • |-----|-----| 모양과 같이 가로 라인이 겹치는 경우 어느 방향으로 이동할지 결정할 수 없다.
  • 실행 결과를 입력받는다.
    • ex) 실행 결과를 입력하세요. (결과는 쉼표(,)로 구분하세요) 꽝,5000,꽝,3000
  • 사다리 실행 결과를 출력한다. 개인별 이름을 입력하면 개인별 결과를 출력하고, all을 입력하면 전체 참여자의 실행 결과를 출력한다.
    • 결과를 출력하고 싶은 이름을 입력받는다. all을 입력받으면 전체 참여자로 출력한다.
      • ex) 결과를 보고 싶은 사람은? pobi
      • ex) 결과를 보고 싶은 사람은? all
    • 개인 이름을 입력 받으면, 입력받은 개인의 당첨 결과를 출력한다.
      • ex) 실행 결과 꽝
      • 개인 이름은 여러번 입력해서 결과를 받을 수 있다.
    • all을 입력받으면 전체 참여자의 실행 결과를 출력한다.
      • 실행 결과 pobi : 꽝 honux : 3000 crong : 꽝 jk : 5000

프로그래밍 요구사항

  • 한 라인의 좌표 값을 가지는 객체를 추가해 구현해 본다.
  • 자바 8의 스트림과 람다를 적용해 프로그래밍한다.
  • 모든 엔티티를 작게 유지한다.
  • 한 줄에 점을 하나만 찍는다.
  • 인스턴스 변수는 2개까지만 사용한다.
  • 게터, 세터, 프로퍼티를 쓰지 않는다.

About

사다리 타기 구현을 위한 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%
0