Pull Request만 보내고, 지원 플랫폼에서 과제를 제출하지 않으면 최종 제출하지 않은 것으로 처리되니 주의한다.
✔️ 과제 제출 전 체크리스트 - 0점 방지
터미널에서 java -version을 실행해 자바 8인지 확인한다. 또는 Eclipse, IntelliJ IDEA와 같은 IDE의 자바 8로 실행하는지 확인한다.
터미널에서 맥 또는 리눅스 사용자의 경우 ./gradlew clean test, 윈도우 사용자의 경우 gradlew.bat clean test 명령을 실행했을 때 모든 테스트가 아래와 같이 통과하는지 확인한다.
BUILD SUCCESSFUL in 0s
🚀 기능 목록 구현
✅ 파일 읽기 기능
파일을 한 줄 기준으로 텍스트를 읽어오는 기능
[예외] 중복된 이름이 있는 경우
[예외] 그 외
이름 목록을 리턴
✅ 이름 목록으로 페어 매칭하는 기능
shuffle 을 활용해 문자열을 섞는 기능
같은 레벨에서 중복된 적이 있는지 확인하는 기능
[예외] 3번 이상 중복된 경우
[예외] 더이상 다른 경우의 수가 없는 경우
[예외] 그 외
페어매칭 결과를 리턴
✅ 컨트롤러
메인화면 출력
기능 선택받기
기능 1을 선택받은 경우
과정, 미션 출력하기
과정, 레벨, 미션 입력받기
매칭 결과 출력
다시 기능 선택받기
또 1인 경우 추가 매칭하는지 재확인 입력받기
기능 2를 선택받은 경우
과정, 미션 출력하기
과정, 레벨, 미션 입력받기
매칭 결과 출력
기능 3을 선택받은 경우
초기화 출력하기
Q를 입력받을 때 까지 게속 반복
✅ 입출력
메인화면
기능 선택
과정, 미션 화면
과정, 레벨, 미션 선택
매칭결과 출력
초기화 출력
🚀 기능 요구사항
우테코의 미션은 페어 프로그래밍으로 진행된다.
미션을 함께할 페어를 관리해주는 애플리케이션을 완성하시오.
도메인 설명
우테코에서 운영하는 과정은 현재 백엔드 과정과 프론트엔드 과정이 있다.
각 과정은 5단계로 나누어 진행이 되는데 이를 레벨이라고 한다.
미션을 수행하며 각 레벨에서 전달하고자 하는 내용을 학습하는데 이 과정을 페어 프로그래밍으로 진행한다.
미션을 시작하기 전 페어를 매칭하는데 다양한 페어를 만나기 위해서 같은 레벨 동안은 같은 페어를 만나지 않는다.
페어 매칭 기능
페어 매칭 조건
- 미션을 함께 수행할 페어를 두명씩 매칭한다.
- 페어 매칭 대상이 홀수인 경우 한 페어는 3인으로 구성한다.
- 같은 레벨에서 이미 페어를 맺은 크루와는 다시 페어로 매칭될 수 없다.
페어 매칭 구현 방법
- 크루들의 이름 목록을 List<String> 형태로 준비한다.
- 크루 목록의 순서를 랜덤으로 섞는다. 이 때 `camp.nextstep.edu.missionutils.Randoms`의 shuffle 메서드를 활용해야 한다.
- 랜덤으로 섞인 페어 목록에서 페어 매칭을 할 때 앞에서부터 순서대로 두명씩 페어를 맺는다.
- 홀수인 경우 마지막 남은 크루는 마지막 페어에 포함시킨다.
- 같은 레벨에서 이미 페어로 만난적이 있는 크루끼리 다시 페어로 매칭 된다면 크루 목록의 순서를 다시 랜덤으로 섞어서 매칭을 시도한다.
- 3회 시도까지 매칭이 되지 않거나 매칭을 할 수 있는 경우의 수가 없으면 에러 메시지를 출력한다.
> 코드 예시
List<String> crewNames; // 파일에서 로드한 크루 이름 목록List<String> shuffledCrew = Randoms.shuffle(crewNames); // 섞인 크루 이름 목록// 페어 매칭 & 검증
...
페어 재매칭 시도
- 안내 문구를 출력 후 매칭을 진행한다.
- 아니오를 선택할 경우 코스, 레벨, 미션을 다시 선택한다.