-
용어의 정리
- 사다리의 다리는 "Leg"로 칭한다.
- 사다리의 단계(열)은 "Rung" 으로 칭한다.
- 사다리의 목적지는 "Destination"이라 칭한다.
- 사다리 게임의 참여자는 "Participant"이라 칭한다.
-
Participant를 입력할 수 있다.
- 인원은 최소 2명, 최대 100명이다.
- Participant의 수 만큼 Leg가 생성된다.
- 입력의 순서가 곧 Leg의 순서다.
- Participant의 수가 Destination의 수보다 작다면, 그 차이만큼 "GHOST" 란 이름을 가진 참여자가 생성된다.
-
Rung
- 3 이상 20 이하로 사용자가 설정할 수 있다.
- 사용자가 단계수를 지정하지 않는다면, 랜덤한 개수의 단계가 설정된다.
- 연속된 Leg는 동일한 Rung을 가질 수 없다.
-
Destination
- 최대 입력 가능한 Destination의 수는 Participant와 같아야 한다.
- Destination의 수가 Participant보다 작다면, 그 차이만큼 "NONE" 이란 상태값을 가진 Destination이 자동으로 추가된다.
-
게임의 등록
- 사다리 게임을 등록할 때는 Participant의 목록, Destination의 목록이 필수로 필요하며, Rung의 개수는 옵션이다.
- 사다리 게임이 성공적으로 등록된다면, 사다리 게임의 결과를 조회할 수 있는 ID를 리턴한다.
- 사다리 게임이 등록되지 않는다면, 예외가 발생하며, 예외 안에는 사용자가 정상적인 입력을 할 수 있도록 돕는 안내 메시지가 포함되어야 한다.
-
게임 결과의 확인
- 등록된 사다리 게임의 ID를 가지고 조회시, 결과를 확인할 수 있다.
- 결과에는 다음이 포함되어야 한다
- Participant의 이동 경로
- Participant의 Destination
- 같은 ID로 조회시 조회 결과는 항상 같아야만 한다.
// 사다리 게임 생성 예시
class LadderCreation(
val participants: List<String>,
val destinations: List<String>,
var rung: Int?
)
// 결과 형태 예시
class Result(
val order : Int, // 순서
val participant: String, // 참여자의 이름
val destination : String, // 목적지(결과)의 이름
val routes : List<Int>, // 참여자가 목적지까지 간 경로(Leg의 번호)
)
- Database: H2 DB를 사용한다.
- Web Layer는 구현 대상에서 제외한다.
- 테스트 코드 커버리지는 80% 이상을 충족해야한다.
- 어떤 환경에서도 실행 가능해야 한다.
- JPA를 무조건 사용한다.