1. 데이터베이스
순위(Rank) 개념과 실습 정리
1️⃣ 순위(Rank)란 무엇인가?
순위란 여러 값들을 비교하여 상대적인 위치를 매기는 것을 의미한다.
점수, 가격, 기록처럼 크고 작음이 명확한 데이터에서 자주 사용된다.
예를 들어 학생들의 시험 점수가 있을 때,
- 가장 높은 점수 → 1등
- 두 번째로 높은 점수 → 2등
과 같이 값의 크기를 기준으로 순서를 정하는 것이 순위이다.
순위 계산의 핵심 포인트는 다음과 같다.
- 기준 값보다 큰 값의 개수를 세어 순위를 결정한다.
- 일반적으로 값이 클수록 높은 순위(1등) 를 가진다.
- 동일한 값(동점)이 있을 경우 처리 기준을 명확히 해야 한다.
2️⃣ 순위 계산 기본 로직
순위 문제의 가장 기본적인 사고 방식은 아래와 같다.
- 기준이 되는 값 하나를 선택한다.
- 전체 데이터와 비교한다.
- 기준 값보다 큰 값이 몇 개인지 센다.
- 순위 = 큰 값의 개수 + 1
이 방식은 데이터 개수가 많지 않은 경우 직관적이고 이해하기 쉽다.
3️⃣ 순위 실습 문제 설명
📘 문제 개요
- 학급 학생 20명의 성적 데이터 사용
- 중간고사 점수, 기말고사 점수를 각각 난수로 생성
- 중간고사 순위, 기말고사 순위를 각각 계산
- 중간고사 대비 기말고사 순위 변화(편차) 출력
즉, 단순히 순위를 구하는 것에서 끝나는 것이 아니라
"얼마나 순위가 올랐는지 / 떨어졌는지"
까지 확인하는 것이 핵심이다.
4️⃣ 실습에서 사용된 데이터 구조
실습에서는 다음과 같은 데이터들이 사용된다.
- 중간고사 점수 리스트
- 기말고사 점수 리스트
- 중간고사 순위 리스트
- 기말고사 순위 리스트
각 인덱스는 같은 학생을 의미하며,
리스트의 위치를 기준으로 학생을 매칭한다.
5️⃣ 순위 변화(편차) 계산
순위 변화(편차)는 다음과 같이 계산된다.
편차 = 중간고사 순위 - 기말고사 순위
- 양수(+) : 순위 상승 (성적이 좋아짐)
- 음수(-) : 순위 하락 (성적이 나빠짐)
- 0 : 순위 변동 없음
출력 예시는 다음과 같은 형태이다.
mid_rank: 16 end_rank: 4 Deviation: ↑12
mid_rank: 11 end_rank: 11 Deviation: 0
mid_rank: 3 end_rank: 14 Deviation: ↓11
이렇게 출력하면 학생별 성적 변화가 한눈에 들어온다.
6️⃣ 이 실습의 핵심 포인트
이 순위 실습은 단순한 알고리즘 문제처럼 보이지만,
다음과 같은 중요한 개념들을 함께 연습하게 된다.
- 리스트 인덱스를 기준으로 데이터를 묶어 사고하는 연습
- 중첩 반복문을 이용한 비교 기반 알고리즘 이해
- 계산 결과를 사람이 읽기 쉬운 형태로 가공하여 출력
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
💡 생각 정리
이번 순위 실습을 하면서 느낀 점은, 알고리즘 문제에서 가장 중요한 것은 코드보다 먼저 로직을 명확하게 그리는 것이라는 점이었다.
처음에는 순위를 계산하는 과정이 복잡하게 느껴졌지만, "나보다 점수가 높은 사람이 몇 명인가"라는 질문으로 바꾸니 문제 구조가 단순해졌다.
또한 순위 변화(편차)를 계산하면서, 단순 계산 결과라도 의미 있는 해석을 붙이면 데이터가 정보가 된다는 점이 인상 깊었다.
특히 리스트의 인덱스를 기준으로 여러 데이터를 동시에 다루는 방식은 앞으로 더 복잡한 문제를 풀 때 반드시 필요한 사고 방식이라는 것을 느꼈다.
🚀 적용점
- 성적 분석, 랭킹 시스템, 게임 점수 비교 로직에 바로 활용 가능
- 리스트 기반 데이터 처리 사고 방식 강화
- 이후 정렬, 탐색, 통계 문제로 자연스럽게 확장 가능
- 실무에서 순위 변화(전월 대비, 전년 대비 등) 분석 로직으로 응용 가능
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -26 (1) | 2025.12.23 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -25 (0) | 2025.12.22 |
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -23 (0) | 2025.12.20 |
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -22 (0) | 2025.12.19 |
| 제로베이스 데이터사이언스 스쿨 - Part 05. 자료구조&알고리즘 with Python -21 (0) | 2025.12.18 |