카테고리 없음

알고리즘 패턴 & 데이터 베이스 (1) LG 유레카 5월 1주차 (5.4~5.10)

superpark 2026. 5. 10. 23:10

TIL: 알고리즘 패턴 복습 & DB 기초 다지기 

오늘은 그동안 진행했던 알고리즘 핵심 패턴들을 다시 한번 정리하고, 새롭게 들어간 데이터베이스(DB)의 기초 개념들을 학습했다. 특히 SQL 구문은 실습이 중요하니까 손에 익을 때까지 계속 써봐야 할 것 같다.(아직은 무슨말인지 잘 모르겠다)


1. 알고리즘: 패턴화 & 핵심 요약

알고리즘은 무작정 푸는 게 아니라 상황에 맞는 도구를 꺼내는 연습인 것 같다. (상황별로 외우면 도움될만한 부분들이 좀 있는듯하다)

자주 쓰는 알고리즘 & 자료구조 패턴

  • 자료구조: Stack(괄호, 후위 표기식), Queue(BFS), PriorityQueue(다익스트라, 최솟값/최댓값 관리) 활용.
  • 탐색: BFS(최단 거리), DFS(완전 탐색), 백트래킹(조건부 완탐).
  • 최적화: 중복 계산이 보이면 무조건 DP(Dynamic Programming) 고려하기 (LIS, 배낭 문제 등).
  • 시뮬레이션: 방향 배열 dr/dc와 반시계 회전 공식 (d+3)%4는 이제 거의 암기 수준으로 익혀야 함.

 주요 문제 해결 포인트 (0507)

  • 가르침(1062번): 조합이랑 비트마스킹을 섞어서 푸는 게 핵심. a, n, t, i, c 5글자는 필수니까 미리 체크!
  • 로봇 청소기(14503번): 조건에 맞춰 구현하는 시뮬레이션. 후진할 때 r -= dr[d] 패턴 기억하기.
  • 아기 상어(16236번): BFS로 가장 가까운 먹이를 찾고 시뮬레이션을 반복하는 구조.

2. Database & MySQL 기초 (New!)

이제 본격적으로 데이터를 관리하는 법을 배운다.

 DB와 RDBMS

  • 데이터베이스: 소프트웨어에 종속되지 않는 독립된 정보 저장소.
  • RDBMS(관계형 DB): 데이터를 표(Table) 형태로 관리. 중복 방지가 핵심! (ex. MySQL)
  • SQL: DB랑 대화하기 위한 표준 언어. 문장 구조가 영어랑 비슷해서 생각보다 직관적임.

 SQL 핵심 구문 정리

  1. 조회(SELECT): WHERE(조건), ORDER BY(정렬), LIMIT(개수), AS(별칭) 조합해서 사용.
  2. 조작(DML):
    • INSERT: 데이터 추가.
    • UPDATE: 데이터 수정 (WHERE 절 빼먹으면 대참사 나니까 주의!!).
    • DELETE vs TRUNCATE: 행 삭제냐 테이블 초기화냐의 차이.
  3. 함수 & 그룹화:
    • 문자열(CONCAT, SUBSTRING), 날짜(DATE_FORMAT, DATEDIFF) 등 내장 함수 활용도 높음.
    • GROUP BY로 묶고 통계 낼 때, 조건은 WHERE가 아니라 HAVING이라는 점 잊지 말기.

 고급 기법

  • JOIN (중요 ): 흩어져 있는 테이블을 하나로 합치는 기능. INNER JOIN이랑 LEFT JOIN 차이 명확히 알기.
  • Subquery: 쿼리 안에 쿼리. 복잡한 필터링할 때 유용함.

3. 데이터 유형 및 제약 조건

  • 자료형: INT(정수), VARCHAR(가변 문자), DATETIME(날짜) 등 데이터 성격에 맞게 설정.
  • 제약 조건:
    • PRIMARY KEY: 데이터 식별자 (중복 X).
    • AUTO_INCREMENT: 번호 자동 생성.
    • FOREIGN KEY: 테이블 간의 관계 연결고리.

 오늘의 회고

  • 알고리즘은 BufferedReader + StringTokenizer 템플릿을 아예 외워버리니까 속도가 훨씬 빨라졌다.(하지만 아직 너무 어려움)
  • DB는 워크벤치(Workbench) 설치해서 직접 테이블 만들고 데이터 넣어보니까 재미는 있는데 혼자는 못할것 같음.
  • 단순히 쿼리를 짜는 걸 넘어, 정규화를 통해 어떻게 하면 데이터를 효율적으로 쪼개고 합칠지 고민해봐야겠다.