Skip to content
kiwijusePublic

About

게임처럼 배우는 알고리즘 — 퀘스트를 깨고 재화를 모아 힌트와 프로필 꾸미기를 사는 알고리즘 학습 사이트

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

Repository files navigation

AlgoWiki

AlgoWiki

게임처럼 배우는 알고리즘

문제를 풀어 퀘스트를 완료하고, 경험치와 재화를 얻고,
그 재화로 아이템을 사고 나를 꾸미는 — RPG 요소를 얹은 알고리즘 학습 플랫폼


HTML5 CSS3 PHP MariaDB C++ jQuery AWS


대학교 졸업작품  ·  2023.11 → 2024.06  ·  구 서비스 주소 algowiki.co.kr


AlgoWiki 메인 화면


문서

프론트엔드 설계 화면을 어떻게 짰는지 — 이 프로젝트의 중심
웹 구조 서버 배치 · URL 맵 · 라우팅 · 요청 흐름
게임화 설계 퀘스트 · 레벨 · 재화 · 상점 · 아이템
시스템 구조 화면이 얹혀 있는 서버 구성 — 개요
파일별 역할 어떤 PHP가 무엇을 하는지
화면 모음 전체 스크린샷과 설명

왜 만들었나

기존 알고리즘 학습 사이트는 "문제를 푼다 → 맞았습니다" 에서 끝납니다. 초심자는 이 루프가 지루해 이탈하고 다음에 뭘 풀어야 할지도 모릅니다.

AlgoWiki는 그 사이에 게임의 보상 루프를 넣었습니다.

   문제 풀이 ──▶ 퀘스트 진행 ──▶ 보상 수령 ──▶ EXP · 알고 코인
       ▲                                          │
       │                                          ▼
   새 퀘스트 ◀──── 리롤 · 힌트 아이템 ◀────── 상점에서 구매
                                                  │
                                                  ▼
                                       프로필 테두리 · 닉네임 컬러
                                          (자랑할 수 있는 것)
기존 사이트의 문제 AlgoWiki의 답
막히면 그냥 창을 닫는다 힌트권 · 시간복잡도 확인권 → 포기 대신 진행
내일 다시 올 이유가 없다 일일 퀘스트 · 출석 체크 · 스트릭 잔디
뭘 풀어야 할지 모른다 난이도대별 · 태그별로 매일 문제를 지목
다 풀고 나면 볼 일이 없다 명예의 전당 — 속도 · 메모리 · 숏코딩 · 선발대

시연 영상

문제를 풀어 퀘스트를 깨고 받은 재화로 상점에서 프로필 테두리를 사서 착용하기까지 — 전체 흐름을 6분 25초에 담았습니다.

algowiki-demo-web.mp4

원본 화질(1080p · 60fps)은 Releases 에서 받을 수 있습니다.


화면

제목을 클릭하면 스크린샷이 펼쳐집니다.

🏠  메인
메인 페이지
📋  문제 목록  —  카드형 / 리스트형 · 태그 필터 · 난이도 티어
문제 목록 카드형

"제목만 표시" 토글을 켜면 밀도 높은 리스트 뷰로 전환됩니다.

문제 목록 리스트형
📝  문제 상세  —  의도된 시간복잡도 · 힌트
문제 상세
🧩  퀘스트  —  일일 / 주간 / 메인 · 보상 수령
퀘스트 탭
🛒  상점  —  특가 · 데일리 · 상시 · 프로필 테두리
상점

프로필 테두리는 내 아바타를 끼운 상태로 미리보기 됩니다.

상점 테두리 미리보기
🎒  인벤토리  —  보유 아이템 · 수량 · 사용
인벤토리
🏆  명예의 전당  —  속도 · 메모리 · 숏코딩 · 선발대
명예의 전당
📚  태그 / 위키  —  직접 집필한 알고리즘 개념 문서
태그 목록

태그마다 개념 문서가 연결됩니다. 아래는 분리 집합 문서 — 경로 압축까지 다룹니다.

위키 - 분리 집합
📊  채점 현황  —  실시간 갱신 · 조건 검색
채점 현황
⚙️  제출 · 설정
제출 페이지

설정 탭

실제 동작 시연 영상 — demo/algowiki-demo.mkv


핵심 기능

퀘스트 — 문제 풀이에 목적을 붙이다

갱신 성격
일일 매일 00시 출석 체크 · Random-Tag 방어 · 난이도별 랜덤 문제
주간 매주 알찬 한 주 — 누적형 목표
메인 영구 계정 성장의 큰 줄기
히든 영구 · 비공개 달성 전까지 ??? 로만 보임
  • Random-Tag 방어전 — 매일 태그 하나가 무작위 배정되고, 그 태그의 문제를 풀어야 클리어
  • Random-Beginner / Normal / Advanced — 난이도대별로 아직 안 푼 문제 중 하나가 지목
  • 출석 체크 — 연속 출석(7일 스트릭) 퀘스트와 연동되어 함께 상승

Note

퀘스트 진행도는 채점기가 정답을 판정하는 순간 갱신됩니다. 화면에서 계산하지 않으니 탭을 열어두든 닫아두든 값이 어긋나지 않습니다.


성장 — 레벨 · 티어 · 재화


None

Beginner

Easy

Normal

Advanced

Hard

Challenge
  • 난이도 티어 — 7단계 × Ⅰ · Ⅱ = 총 13단계. "표시 안 함 / 항상 표시 / 내가 푼 문제만 표시" 를 사용자가 직접 고릅니다
  • EXP / LV — 누적 경험치를 레벨 구간표에 이분 탐색해 레벨과 진행률을 계산
  • 알고 코인 — 퀘스트 보상으로만 얻는 유일한 재화. 현금 결제 경로는 없습니다
  • 스트릭 잔디 — GitHub 잔디처럼 일별 풀이량을 시각화. 색도 아이템으로 바꿉니다

상점 & 아이템 — 재화를 쓸 곳


힌트권
난이도별 해금

시간복잡도
확인권

일일퀘스트
리롤권

닉네임 컬러
변경권

스트릭 컬러
변경권

럭키 박스
구획 특징
특가 상품 48시간 한정 · 할인율 배지
데일리 상품 24시간마다 교체되는 난이도별 힌트권
상시 상품 리롤권 · 힌트권 · 복권 · 확인권
프로필 테두리 36종 — 정지 16 · 애니메이션 GIF 20

Tip

닉네임 색을 사이트 전역(채점 현황 · 랭킹 · 게시판)에 반영한 결정이 중요했습니다. 프로필 안에서만 보이면 아무도 사지 않습니다. 남의 눈에 띄어야 재화를 쓸 이유가 생깁니다.


그 외

  • 태그 / 위키 — 60여 개 태그. 각 태그에 직접 집필한 개념 문서와 추천 문제 연결
  • 명예의 전당 — 문제별 속도 · 메모리 · 숏코딩 · 선발대 4개 부문 시상대
  • 채점 현황 — 최신 제출만 가볍게 감시하다 변화가 있을 때만 목록 갱신
  • 게시판 — 자유 / 질문 / 신고 + 문제별 질문 게시판, 댓글, 검색
  • 퀴즈 — 객관식 · 주관식 개념 퀴즈 (일일 퀘스트 연동)
  • 프로필 — GitHub 아바타 연동, Discord / Blog 링크, 공개 범위 개별 설정

프론트엔드

Important

이 프로젝트의 화면 마크업(PHP 뷰)과 CSS는 AI 도움 없이 직접 설계하고 작성했습니다. 설계 노트: docs/frontend.md

빌드 도구도, 프레임워크도 없이 — 서버가 내려주는 PHP 문자열과 손으로 쓴 CSS만으로 위 화면들을 만들었습니다.

AJAX 부분 렌더링 *_db.php 가 조각 HTML을 반환하고 jQuery가 DOM에 꽂는 구조.
탭 · 페이지네이션 · 필터가 전부 새로고침 없이 동작
CSS만으로 만든 탭 숨긴 <input type="radio"> + input:checked ~ #content.
JS 없이 상태를 가집니다
육각형 아이콘 outer / inner 이중 clip-path 로 테두리 있는 육각형 구현
반응형 991 / 850 / 670 / 550px + pointer: coarse 로
"좁은 데스크톱"과 "터치 기기"를 다르게 취급
보상 연출 수령 시 좌우 두 지점에서 폭죽, 남은 시간에 비례해 입자 감소
시즌 연출 크리스마스에 GSAP + Vue로 눈 내리는 배경, 산타 모자 쓴 로고

시스템 구조

   Browser ──── HTTP ────▶  Apache + PHP  (웹 · 뷰 계층)
       ▲                              │
       └──── AJAX 조각 ────────────────┤
                                      ▼
                                   MariaDB
                                      ▲
                    ┌─────────────────┴─────────────────┐
                    │                                   │
            HUSTOJ 채점기                        cron 스케줄러
         └ 퀘스트 훅 ★ 직접 추가                 └ 일일 / 주간 초기화 ★

AWS EC2 단일 인스턴스 위에 Apache + PHP + MariaDB + HUSTOJ 채점기. 게임화에 필요한 두 조각(채점 시 퀘스트 진행도 갱신, 매일·매주 퀘스트 초기화)만 직접 얹었고 나머지 채점 파이프라인은 HUSTOJ를 그대로 썼습니다.

→ docs/architecture.md


저장소 구조

AlgoWiki/
├─ src/
│  ├─ web/              실제 서비스에 올라가 있던 PHP · CSS
│  │  ├─ index.php          메인 페이지
│  │  ├─ header.php         전역 헤더 / 내비게이션 (테마 계층)
│  │  ├─ problem_list.php   문제 목록  ·  problem.php   문제 상세
│  │  ├─ status.php         채점 현황  ·  category.php  태그/위키
│  │  ├─ userinfo.php       프로필 라우터 · quiz.php    퀴즈
│  │  ├─ board.php          게시판 라우터 + 글/댓글 액션
│  │  ├─ problem/           문제 · 채점 현황 렌더러 (_header / _db)
│  │  ├─ userinfo/          프로필 · 퀘스트 · 상점 · 인벤토리 · 설정 탭
│  │  ├─ quest/             퀘스트 목록 · 보상 수령 엔드포인트
│  │  └─ board/             게시판 분류별 뷰
│  └─ judge/
│     ├─ quest_api/         채점기에 심은 퀘스트 진행도 훅 (C++)
│     └─ scheduler/         일일 / 주간 퀘스트 초기화 cron (C++)
├─ assets/              실제 서비스에서 쓰던 이미지 전량
│  ├─ screenshots/          화면 캡처 15장
│  ├─ brand/                로고 · 파비콘 · 아이콘
│  ├─ main/                 메인 히어로 이미지
│  ├─ tier/                 난이도 티어 보석 (v1 / v2 / v3)
│  ├─ quest/                퀘스트 아이콘 29종
│  ├─ border/               프로필 테두리 36종
│  └─ inventory/            아이템 아이콘
├─ templates/           아이템 · 퀴즈 마크업 원본 (서비스에 쓰인 HTML 조각)
├─ docs/                설계 문서
├─ paper/               졸업 논문 (PDF)
└─ demo/                시연 영상

서버 배치와 요청 흐름 → docs/web-structure.md 파일 하나하나의 역할 → docs/file-map.md

Note

이 저장소에는 AlgoWiki 팀이 직접 만든 것만 담았습니다. HUSTOJ가 제공하는 채점기 · 코어 인클루드 · 인증 · 랭킹 · 관리자 페이지는 포함하지 않고 출처만 NOTICE.md 에 남겼습니다.


문제 · 콘텐츠

  • 사이트에 등록된 알고리즘 문제 200여 개는 팀에서 직접 출제하고 상호 검토한 창작 문제입니다
  • 각 문제에 의도된 시간복잡도, 단계별 힌트, 아이템으로 해금되는 상세 힌트를 붙였습니다
  • 태그별 알고리즘 위키 문서 역시 직접 집필했습니다

문제 본문 · 테스트 데이터 · 위키 본문은 서비스 DB에 있었으므로 이 저장소에 포함되어 있지 않습니다.


크레딧 · 라이선스

오픈소스 온라인 저지 HUSTOJ 를 베이스로 시작해 그 위에 게임화 시스템과 프론트엔드 전면을 새로 얹은 프로젝트입니다.

베이스 OJ HUSTOJ — © zhblue, GPL
테마 원형 SYZOJ 테마 (HUSTOJ 동봉 템플릿)
웹폰트 JalnanGothic (여기어때 잘난체)

HUSTOJ가 GPL이므로 이 저장소도 GPL-2.0 을 따릅니다. 전체 고지는 NOTICE.md 를 참고하세요.


AlgoWiki is powered by HUSTOJ, Theme by SYZOJ

About

게임처럼 배우는 알고리즘 — 퀘스트를 깨고 재화를 모아 힌트와 프로필 꾸미기를 사는 알고리즘 학습 사이트

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages