✅ 1. Print average score of a student
특정 학생의 평균 점수 출력
EN: Print the average score of the given student to 2 decimal places.
KR: 주어진 학생의 평균 점수를 소수점 둘째 자리까지 출력하세요.
Example Input / 입력 예시
Example Output / 출력 예시
Solution / 정답
Review / 복습 포인트
-
Use dictionary to store scores / 딕셔너리로 점수 저장
-
Use
*scoresto unpack / 언패킹 사용 -
Use
sum()/len()to compute average / 평균 계산 -
Use
f"{value:.2f}"for formatting / 소수점 출력 포맷
✅ 2. Print total score of a student
특정 학생의 총합 점수 출력
EN: Output the total score of the student specified.
KR: 특정 학생의 총합 점수를 출력하세요.
Output Code
Review
-
Use
sum()to add up values /sum()으로 총합 계산
✅ 3. Filter students with average ≥ 60
평균이 60점 이상인 학생 필터링
EN: Print only students whose average score is 60 or more.
KR: 평균 점수가 60 이상인 학생의 이름만 출력하세요.
Review
-
Filtering condition using average / 조건 필터링
✅ 4. Sort students by average score
평균 점수 기준으로 정렬
EN: Sort students in ascending order by average score.
KR: 학생들을 평균 점수 기준으로 오름차순 정렬하세요.
Review
-
Use
sorted()withlambdafor custom key / 정렬 기준 지정
✅ 5. Print top N students by average
평균 기준 상위 N명 출력
Review
-
[:N]슬라이싱 사용 -
reverse=True로 내림차순
✅ 6. Filter names starting with 'a' and sort
'a'로 시작하는 학생만 필터링 후 정렬
Review
-
startswith(),lower()활용한 문자열 필터링
✅ 7. Find students with second highest average
두 번째로 높은 평균 점수를 가진 학생 찾기
Review
-
set()으로 중복 제거 -
평균 계산 중복 주의
✅ 8. Sort by average, break tie alphabetically
평균 점수로 정렬하되 동점자는 알파벳순
Review
-
-avg로 내림차순,name으로 동점자 처리
✅ 9. Filter students with total ≥ 200 and sort
총합 점수 200 이상 학생 필터 후 내림차순 정렬
Review
-
조건 필터링 + 정렬 혼합 사용
✅ 10. Sort 'a' names by average descending
'a'로 시작하는 학생들을 평균 기준으로 내림차순 정렬
Review
-
조건 필터 후 평균 기준 내림차순
지금까지 풀었던 10문제를 바탕으로, 핵심 개념과 패턴을 복습 정리 모드로 정리해드릴게요.
당신이 공부한 건 단순히 “문제풀이”가 아니라,
Python 딕셔너리 기반 데이터 처리의 핵심 스킬이었습니다. 💪
🧩 1. 📦 데이터 저장: 딕셔너리 + 리스트
-
name, *marks→ unpacking -
map(int, marks)→ 문자열을 숫자로 -
dict[name] = [...]→ 이름을 key로 점수 리스트 저장
🧠 2. 📊 평균 / 총합 계산
평균:
총합:
-
sum()과len()조합은 필수 스킬
🧹 3. ✅ 조건 필터링 (List comprehension)
-
조건 + 반복을 한 줄로 처리 → 실전에서도 매우 유용
🔢 4. 🧮 정렬 (sorted + key=)
평균 기준 정렬:
알파벳순 정렬:
평균 → 동점자 알파벳순:
🎯 5. 🌟 특별한 패턴들
중복 제거 + 정렬:
슬라이싱 (Top N명):
❗ 6. 실수 주의 포인트
| 실수 | 왜 잘못일까 |
|---|---|
key=sum(...) | sum(...)은 숫자, 함수가 아님 |
student_scores[name] == number | 리스트와 숫자 비교 불가능 |
lambda name: student_scores[name] | 리스트 자체로 정렬 기준 삼으면 불안정 |
🧭 7. 정리: 문제유형별 분류
| 유형 | 예시 문제 |
|---|---|
| 단일 조회 | 문제 1, 2 |
| 조건 필터링 | 문제 3, 6, 9 |
| 정렬 | 문제 4, 5, 8, 10 |
| 두 번째 값 찾기 | 문제 7 |
| 복합 조건 + 정렬 | 문제 8, 10 |
📌 추천 복습 방법:
-
지금까지 푼 문제 다시 코드 없이 말로 설명해보기
-
내가 직접 입력을 만들어보고 출력 예측해보기
-
lambda,sorted,dict연습 따로 쪼개서 연습
🧩 퀴즈 1번
Q. Which code correctly calculates the average score of a student from a dictionary called student_scores? A
student_scores = {'Bob': [70, 60, 65]}
A. sum(student_scores['Bob']) / len(student_scores['Bob'])
B. len(student_scores['Bob']) / sum(student_scores['Bob'])
C. student_scores['Bob'] / 3
D. average(student_scores['Bob'])
🧩 퀴즈 2번 (빈칸 채우기)
Q. Fill in the blank to sort students by average score in ascending order. C
A. student_scores[name]
B. lambda name: sum(student_scores[name])
C. lambda name: sum(student_scores[name]) / len(student_scores[name])
D. student_scores.items()
Comments
Post a Comment