📊 TODO
📍3월 1일 : 2차 릴리즈 예정 (+재홍보
- 릴리즈 날짜( 막회의 날짜 ) 바꾸기 가능한가요..? 4일으루 ㅎㅎ✅
- 수식 설계 / 피드백✅
- 후원요청 메일 난사하기
- 리프레시 기능 📝
- 도메인 리디렉션 고치기✅
- 미리 매일 순위 데이터 모집 가능?✅
📊 주간 회의
- 이화여대의 전체 풀린 문제 | 오늘 풀린 문제 개수 기능 추가하기
- 오늘의 문제 => 추천 문제 ( 풀면 사라지게 )
- 이화여대 백준 순위 그래프 만들기
DB 변경 사항
- 이화여대 날짜별 풀린 문제 개수 / 등수
- 학생별 푼 문제 번호 리스트
- erdcloud에 erd 그리기
이번주 TODO✅
정은체
소은이 api 리프레시 기능 연결
실제 데이터로 수식 테스트해보고 미세 조정
히언
일별 이화여대 푼 문제 개수/순위 저장 기능
DB 설계 / ERD 작성
소은
로그인쪽 완료
마이바티스 마이그레이션
에러처리...?
📊 학생 순위 기여 랭크용 수식
적용 범위
- 전체 기간
- 전체 문제
적용 항목
- 문제 난이도
- 내가 푼 문제들에 이화인이 몇 명 푼 문제인지 알아내서 가중치를 주기 ( 나만 푼 문제면 가중치 높/많이 푼 문제면 가중치 다운)
< 기본 점수(난이도) > S(basic)
S(basic)
- : 총 문제의 개수
- Ki: 해당 문제(i)의 난이도 점수
K => Bronze V는 1점, Bronze IV는 2점, ..., Ruby I는 30점
# 난이도별 점수 딕셔너리
difficulty_scores = {
'bronze5': 1, 'bronze4': 2, 'bronze3': 3, 'bronze2': 4, 'bronze1': 5,
'silver5': 6, 'silver4': 7, 'silver3': 8, 'silver2': 9, 'silver1': 10,
'gold5': 11, 'gold4': 12, 'gold3': 13, 'gold2': 14, 'gold1': 15,
'platinum5': 16, 'platinum4': 17, 'platinum3': 18, 'platinum2': 19, 'platinum1': 20,
'diamond5': 21, 'diamond4': 22, 'diamond3': 23, 'diamond2': 24, 'diamond1': 25,
'ruby5': 26, 'ruby4': 27, 'ruby3': 28, 'ruby2': 29, 'ruby1': 30
}
# 각 난이도별로 푼 문제 수
problems_solved = {
'gold3': 4,
'silver4': 5,
# 예시 데이터
}
# 점수 총합 계산
def calculate_total_score(difficulty_scores, problems_solved):
total_score = 0
for difficulty, count in problems_solved.items():
if difficulty in difficulty_scores:
total_score += difficulty_scores[difficulty] * count
return total_score
# 결과 출력
total = calculate_total_score(difficulty_scores, problems_solved)
< 랭킹 기여도(문제 희소성) 추가점수 > S(rare)
S(rare)
- : 총 문제의 개수
- K: 기본 가중치
- λ: 감소율
- : 문제 를 푼 사람 수
지수 함수 기반
import math
def calculate_rare_score(problem_dict, K=10, lambd=0.02):
rare_scores = 0
for problem, people_solved in problem_dict.items():
score = K * math.exp(-lambd * people_solved)
rare_scores += round(score, 1)
return rare_scores
# {문제 번호 : 푼 사람 명수 } 딕셔너리 예시
problems = {
"problem_1": 1,
"problem_2": 2,
"problem_3": 5,
"problem_4": 10,
"problem_5": 20,
"problem_6": 50,
"problem_7": 100,
}
rare_scores = calculate_rare_score(problems)
예시 )
문제를 푼 사람 수 N을 여러 개 두고, 알맞은 λ값 찾기 ( K = 10 (S(basic)과 크기 맞추기용) / 소수점 한 자리까지 )
후보 함수 예시
- 지수 함수
- 로그 함수
- 가우시안 함수
- 역제곱법
<완성 수식>
S(total) = S(basic) + S(rare)
코드는 DB 구조에 따라서 바뀔 것 같음
학생 DB / 문제별 DB에 어떤 식으로 정보 저장?
학생이 푼 문제번호들 / 문제 난이도, 이화인 중 문제 푼 사람 명수 이렇게인가
=> 실제 데이터로 테스트 해 본 이후 조정
📊 도메인 리프레시 떼고 DNS 설정 제대로
앗싸 뭐지??
적용됐네??
시간이 오오오래 필요한 거였니..?
정통공 너무 싫어서 네트워크 수강 안 하려고 했는데
수강해야 할 듯...
📊 리프레시 버튼 개발
- 소은이의 api 완성을 기다리기
- 쿠키 세션 토큰 공부
프론트단에서
쿠키가 만료됐는지 안 됐는지에 따라 구분해서 api 보내기
쿠키가 일주일 동안 유지되게 일단 함
📊 소중대/산학협력관/과사 후원요청 메일 보내기
+ 인재개발원
ㅜㅜㅜㅠㅠㅠ어캄
딴 데 답장 업ㄱ는곳
개강하고...다시 보내보기
📊 ERD : erdcloud
오늘은 우리 동생의 생일.
이제 케이크 먹을 타이밍
우리 금쪽고3이를 위한.. 기출문제집으로 위장한 선물
'Club|Project > 이대솔브닥웹사이트 - 뀨엘 | Frontend(React,Next.js)' 카테고리의 다른 글
📊 뀨업 : 2차 릴리즈 준비 - 회의 4 : 리프레시 쿠키용 https aws 로드밸런서(인증서,라우터) 설정 (0) | 2025.01.25 |
---|---|
📊 뀨업 : 2차 릴리즈 준비 - 회의 3 : 리프레시 기능 api 연결 (1) | 2025.01.20 |
📊 뀨업 : 2차 릴리즈 준비 - 모각코회의 1 : 인스타, 후원요청, 리프레시 기능 프론트 (3) | 2025.01.04 |
📊 뀨업 : 1차 릴리즈 회고 / 2차 릴리즈 준비 (1) | 2024.12.28 |
📊 뀨업 : 홍보 (2) | 2024.12.27 |