기간 : 8/25 ~ 8/29
서서히 어려워지고 메인 수업만으로 바빠지기 시작한 2주차
📕 2주차 리뷰
데이터베이스가 너무 어렵다
대학 때 DB 수업을 좀 더 집중해서 들을걸 하는 후회가 밀려온다.
개념적으로 알아둬야 할 게 굉장히 많고, 엔터티와 정규화의 경우 어떤 개념과 어떤 개념을 연결지을지를 결정하는 과정이 논리와 직관의 영역이라 코딩처럼 확실하게 로직이 떠오르지 않는다. 테이블에 많이 익숙해질 필요가 있다.
그나마 다행이라면 프로그래밍 언어에 비해 MySQL 문법 자체가 꽤 단순하다는 정도. 물론 각 키워드를 적재적소에 조합해 주어진 문제를 해결하는건 어렵다.
✅ Keep
파이썬 문법 마무리
- 파일 입출력, 예외처리, 클래스 상속은 기존에 알던 지식을 강화하는 느낌으로 공부했다.
- 파이썬으로 파일 IO를 자주 다뤄보지 않아서 이 부분은 좀 더 손감각을 익힐 필요가 있다.
💥 Problem
1. Streamlit
프론트 쪽 지식이 전무해서 용어 같은게 아직은 생소하지만, 파이썬 문법 기반으로 많은 기능을 지원해줘서 페이지 만드는게 꽤 재밌다. 강사님이 개인 페이지를 만들어보라 하셔서 어차피 내 공부와 직결되는 내용이기에 집에서 예제 페이지를 하나 만들어봤다.
내가 좋아하는 여행을 주제로 즉흥적으로 선정해봤다.
한국에 오는 외국인들을 여러 기준으로 분석하는 페이지다.
streamlit 자체적으로 가운데 정렬 기능을 제공하지 않는것 같아서 고민을 해봤다.
_, col1, _ = st.columns([0.1, 0.8, 0.1])
화면을 3분할하고 양 옆은 비우고 가운데 컬럼만 채워주는 것으로 중앙 정렬된 것처럼 시각화를 주었다.


selectbox로 연령별을 누르면 '연령대' 필드를, 목적별을 누르면 '방문 목적' 필드에서 항목을 가져오도록 분기점을 두었다.

처음에는 분석할 csv 파일의 이름을 직접 타이핑해서 변수에 넣었는데, 데이터를 고칠 때마다 소스코드를 열어야하는게 너무 비효율적이다.
고민을 해보다가 selectbox의 선택값을 파라미터로 받아 내 컴퓨터에서 csv 파일을 추적해 가져오는 것으로 자동화했다.
이 짧은 함수를 구현하는 동안 정말 많은 에러 메세지를 마주했다.


연령대별은 막대그래프, 목적별은 도넛차트로 구현해봤다. 그림이 너무 못생겨서 보기 힘들다.
[관광 데이터 출처 : 한국관광공사 데이터랩]
2. 데이터베이스 기초와 문법
DB는 거의 처음 다뤄본 것이기에 앞으로 익힐 게 많다.
primary key : 테이블에 대한 식별 키. 즉, 특정 테이블을 대표할 수 있는 유일한 값.
foreign key : 외부 테이블에서 참조해온 키.
릴레이션 : 각 속성의 관계를 그린 것
어트리뷰트 : 각 필드
튜플 : 하나의 row
차수 : 어트리뷰트의 개수
카디널리티 : 튜플의 개수

이 릴레이션의 차수는 4이고, 카디널리티는 4개다.
카디널리티를 세는데 어트리뷰트는 포함되지 않음에 주의.
정규화
중복 데이터와 모호한 데이터를 제거하고 테이블을 안정화시키는 것
- 제1정규형 : 다가 속성 제거. 즉, 모든 속성이 하나의 값만 가지도록 함
- 제2정규형 : 후보 식별자와 그 관련 속성을 별도 테이블화하여 좀 더 명확하게
- 제3정규형 : 일반 속성간 종속성이 있을 경우 이를 분리
- 제4정규형 : 서로 연관이 없는 다가 속성 분리
- 제5정규형 : 테이블을 조인 (여기까지 하는 경우는 잘 없음)
SQL 문법
select : 조회 / from 조회할 테이블
where : 조건절 (if문과 비슷)
order by : 기본 오름차순 정렬, desc 지정 시 내림차순
limit [시작위치], 개수 : 조회할 행 제한
JOIN
inner join : 두 테이블의 교집합을 결합 (디폴트)
outer join : 두 테이블을 결합하지만 한 쪽이 null값이어도 결합해버린다
SUBQUERIES
메인 쿼리에 특정 결과를 반환하는 쿼리
나는 이걸 함수 안의 함수로 이해했다
3. PCCP
8/27 PCCP 시험이 있었다. 성적 X, 경험 위주
총 2시간 4문항이었는데 꽤 어려웠다.
- 1번 : 문자열 순회. 간단하게 풀었으나 독해력 이슈로 문제 조건을 이해하는데 조금 걸렸다.
- 2번 : 행렬 회전. 행렬을 쌩으로 회전시키는 함수를 구현했으나 N 값이 커질 때 회전이 복잡해지는 것을 해결하지 못했다.
- 3번 : 너비 우선 탐색. 조건에 맞게 격자 칸을 만들기까지만 하고 송신기 위치를 탐색하는 과정에서 막혔다.
- 4번 : 동적계획법. 첫번째 경우의 수를 구하는 것까진 스무스했지만 이걸 반복하는 데에서 막혔다. DP 문제는 직관이 중요하다.
🚩 Try
DB 개념과 정규화, SQL 문법 복습하기
- 생소한게 많아 DB와 친해지려면 아직 멀은듯하다.
1차 프로젝트
- 이제 첫 프로젝트가 있는 주차가 온다. 3주차는 일단 프로젝트에 집중하기
코테 꾸준히 문제 풀어보기
- 당장에 거창한 목표는 오히려 고꾸라지기 쉽다. 우선은 기초적인 문제부터 풀면서 시험환경에 대한 적응과 습관화를 목적으로.
'SKN 19기' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 6주차 회고 (0) | 2025.09.28 |
|---|---|
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 5주차 회고 (0) | 2025.09.24 |
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 4주차 회고 (0) | 2025.09.14 |
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 3주차 프로젝트 회고 (0) | 2025.09.06 |
| [플레이데이터 SK네트웍스 Family AI 캠프 19기] 1주차 회고 (0) | 2025.08.24 |