Skip to content

prefer52/algorithm-team-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

# Algorithm_Team_Project

학생들의 수강 과목 정보를 받아서 종합한 뒤, 시험 날짜가 겹치게 하는 것을 최대한 피해서 최대한 적은 학생이 동일 날짜에 시험을 보는 것을 지향하는 알고리즘

기존에 준비해야하는 데이터 : 충분한 양의 과목과 그에 대한 강의 시간, 중간, 기말 시험주차 정보
입력 : n명의 특정 수강생이 듣고 있는 과목들
출력 : n명의 특정 수강생이 듣고 있는 과목들의 주차 별 시험시간 배정정보

자료구조-
과목 정보를 담고 있는 구조체(과목 학수번호, 과목 시간표, 시험 주차, 듣는 학생의 수를 의미하는 가중치)
학생 수강 과목 정보를 담고 있는 구조체(듣고 있는 과목별 학수번호)
과목 시간표(요일, 시간대)
요일별 데이터를 담은 배열(1, 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9)

원칙
1. 시간표의 선택지가 적은 순부터 먼저 배정한다(기창특은 수업시간표가 금요일 하나이므로 가장 먼저 배치, 일물실은 시간표가 3개이므로 가장 마지막에 배치)
2. 시험은 시간표가 나누어져있을 때 되도록이면 빠른 요일부터 배정한다
3. 동일한 가중치의 시간표는 테이블에 들어간 순서대로 배정한다
4. 같은 수업의 분반들은 배정할 때 서로를 고려하지 않는다.
5. 시간표가 겹치는 수업들은 배정할 때 서로를 고려하지 않는다.

알고리즘
1. 학생마다 최적의 시험시간을 배정->종합하여 가장 많이 배정된 시험시간부터 할당
2. 학생들의 시간표를 받아 가장 많은 학생들이 수강한 가중치가 높은 시험시간부터 배정
3. 1번째 학생부터 시험을 최적으로 배정 -> 2번째 학생은 1번째 배정을 바탕으로 안겹치게 배정 -> 3번째도 -> 당장 최선만 고르므로 greedy?
4. 학생마다 모든 시간표의 경우의 수를 다 짠다 -> (2^7 )^200

공통적 : 일단 다 모은 뒤 가중치별로 정렬

case1. 무조건 안 겹치게 나올 수 있는 시간표
case2. 하나만 겹치게 나올 수 있는 시간표
-> 같은 수업의 분반일 때
-> 다른 수업이지만 강의시간이 겹칠 때
case3. 복잡한 시간표 구성

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •