파일 입출력
- 페어매칭에 필요한 크루들의 이름 불러오기.
- 파일의 내용은 수정이 가능하다.
- 수정 시 이름은 중복 될 수 없다.
입력
- 기능의 종류 입력받기
- 1,2,3,Q 중 하나 인지 확인
- 과정, 레벨, 미션 입력 받기 ex)
백엔드, 레벨1, 자동차경주- 유효한 과정, 레벨, 미션 인지 확인
페어매칭
- 과정, 레벨, 미션 입력 받기 ex)
백엔드, 레벨1, 자동차경주- 유효한 과정, 레벨, 미션 인지 확인
- 이미 매칭 된게 있다면
- 재매칭 입력 네
- 다시 재매칭 후 저장
- 재매칭 입력 아니오
- 다시 과정, 레벨, 미션 입력 받기 ex)
백엔드, 레벨1, 자동차경주
- 다시 과정, 레벨, 미션 입력 받기 ex)
- 재매칭 입력 네
- 이미 매칭 된게 없다면 바로 매칭
- 매칭 시작
- 크루들 이름 List로 불러오기
- 셔플 후 페어 만들기
- 미션을 함께 수행할 페어를 두명씩 매칭한다.
- 페어 매칭 대상이 홀수인 경우 한 페어는 3인으로 구성한다.
- 마지막 남은 크루는 마지막 페어에 포함시킨다.
- 기존의 모든 기록들에서 같은 과정이면서 레벨인 모든 페어 찾기
- 이미 페어를 맺은 크루가 있는지 확인
- 있다면 다시 셔플 후 재매칭
- 3회 시도까지 매칭이 되지 않거나 매칭을 할 수 있는 경우의 수가 없으면 에러 메시지를 출력한다.
- 없다면 해당 페어 저장
- 있다면 다시 셔플 후 재매칭
- 이미 페어를 맺은 크루가 있는지 확인
조회
- 과정, 레벨, 미션을 선택하면 해당 미션의 페어 정보를 출력한다.
- 매칭 이력이 없으면 매칭 이력이 없다고 안내한다.
-
[ERROR] 매칭 이력이 없습니다.
-
페어초기화
- 기존 페어들의 매칭 기록 초기화
출력
- 사용자가 잘못된 값을 입력할 경우
IllegalArgumentException를 발생시키고,[ERROR]로 시작하는 에러 메시지를 출력 후 해당 부분부터 다시 입력을 받는다. - 매칭이 정상적으로 수행되면 결과가 출력된다.
- 출력되는 페어의 순서는
camp.nextstep.edu.missionutils.Randoms의 shuffle 메서드의 결과 순서로 정렬한다.
- 출력되는 페어의 순서는