2025.11.13 TIL (본캠프, 19일차)
오늘도 아침 9시부터 SQL 코드카타로 하루를 시작했다. 어제보다 한 단계 높은 Level 3에 도전했다. 그리고 오전/오후에는 Python 기초 이론과 실습의 마지막 세션이 있었다. 실제 데이터를 다루는 실습을 통해 그간 배운 이론을 총정리하는 시간이었다.
어제까지는 Level 2를 풀고 있었다면, 오늘부터는 Level 3에 도전했다. 10문제를 풀었는데, 흥미로운 패턴을 발견했다.
Level 3라고 해서 모든 문제가 같은 난이도는 아니었다. 생각보다 쉬운 문제들도 있었고, 어려운 문제들도 있었다.
곰곰이 생각해보니 "내가 정확히 이해하고 있는 부분은 쉽게 풀린다"라는 걸 깨달았다.
예를 들어:
- WHERE 절을 잘 이해하고 있는 문제 → 쉽게 품
- 복잡한 GROUP BY와 HAVING이 필요한 문제 → 어렵게 느껴짐
이런점은 내가 아직 완벽히 이해하지 못한 부분이 어디인지를 명확히 보여주는 것이 아닐까 싶다.
그리고, 틀린 문제 중 일부는 문제를 꼼꼼하게 읽지 못한 실수였다.
예를 들면:
- 문제: "2022년 5월의 이용자를 찾으시오"
- 나의 답: 이용자만 찾음
- 올바른 답: 2022년 5월이라는 시간 조건까지 포함해서 찾아야 함
작은 차이처럼 보이지만, 정답과 오답은 한끗 차이다.
이제부터는 문제를 풀 때 다음과 같은 체크리스트를 활용해야겠다:
- 문제를 정확히 읽기 - 무엇을 요구하는가?
- 조건을 모두 찾기 - 시간, 범위, 필터 등
- 결과 확인하기 - 예상한 결과가 나왔는가?
꼼꼼함은 기술만큼이나 중요한 역량인거 같다.
오늘은 Python 기초 이론의 마지막(8회차) 세션이 있었다. 지금까지 배운 모든 개념들을 실제 데이터와 함께 종합하는 시간이었다.
실습 주제: 학생 성적 분석 & 리포트 생성기
주어진 데이터: school_scores.csv
구현 요구사항:
- 평균 계산 - 각 학생의 국어, 영어, 수학 점수의 평균
- 최고점 찾기 - 각 학생의 세 과목 중 최고 점수
- 합격 여부 판단 - 설정된 기준에 따른 합격/불합격
- 누락된 데이터 처리 - 없는 데이터는 안전하게 건너뛰기
- JSON 파일로 저장 - 결과를 구조화된 형식으로 저장
파일 불러오기 - CSV 처리
import csv
with open("school_scores.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
students = list(reader)
print(students[:2])
# 출력:
# [
# {'name': 'Hannah', 'kor': '90', 'eng': '95', 'math': '85'},
# {'name': 'Minjun', 'kor': '80', 'eng': '88', 'math': '92'}
# ]
csv.DictReader()의 역할:
- 첫 번째 행(헤더)을 자동으로 키(Key)로 인식
- 각 행이 딕셔너리로 반환됨
- students[0]["name"]처럼 직관적으로 접근 가능
# 딕셔너리 접근
hannah = students[0]
print(hannah["name"]) # Hannah
print(hannah["kor"]) # 90
오늘 실습은 지금까지 배운 모든 것을 포함하고 있는거 같다.
- 파일 입출력 - 파일 읽기, 쓰기
- 데이터 구조 - 리스트, 딕셔너리
- 반복문 - 학생들의 데이터 순회
- 조건문 - 합격 여부 판단
- 함수 - 계산 로직을 함수로 구성
- 오류 처리 - 누락된 데이터 안전 처리
- 라이브러리 활용 - csv, json 라이브러리
파이썬은 아직 이해되지 않은 부분이 많다고 개인적으로 생각한다.
실습을 진행하면서 느낀 것은 "이론으로 배운 것"과 "실제로 구현하는 것"의 큰 차이가 있다라는 것이다.
- 변수 관리: 전역 변수와 지역 변수의 구분이 아직 헷갈림
- 에러 처리: 예상치 못한 오류가 발생했을 때 대응 방법 부족
- 코드 구조: 복잡한 로직을 어떻게 함수로 분해할지 명확하지 않음
이해되지 않은 부분들을 해결하기 위해 1강부터 빠르게 복습해야 한다는 생각이 든다.
한 번 배우고 지나가면 피상적인 이해에 그치게 된다. 하지만 실습을 진행해보니 어디가 부족한지 명확해졌다. 이제 그 부분들을 집중해서 복습해야겠다.
오늘의 학습 내용:
- SQL 코드카타: Level 3 진입, 10문제 해결
- Python 기초 이론: 최종 세션 (학생 성적 분석 프로젝트)
- 문제점 인식: 꼼꼼함의 중요성 & 아직 부족한 부분들
학습을 통해 느낀점:
- 꼼꼼함은 기술이다 - SQL 문제에서 작은 실수로 인한 오답 경험
- 이론 ≠ 실습 - 배운 개념을 실제로 구현하는 것은 다르다
- 복습은 필수 - 기초부터 다시 한 번 견고히 다져야 함
내일 목표:
- SQL: Level 3을 완벽히 마스터하고 Level 4로 진입
- Python: 1강부터 빠르게 복습하며, 각 개념을 깊이 있게 이해
- 실습: 학생 성적 분석 프로젝트 완성
한 주의 4일을 마무리했다. 나머지 하루를 남겨두고 있는데, 지금까지의 학습이 초반의 기초를 넘어 심화 단계로 진입하고 있는 것을 느낀다.
4주차가 거의 끝나간다. 다음 주는 5주차다.
지금처럼 꾸준히, 그리고 정확하게 학습하자!