Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 3.35 KB

File metadata and controls

55 lines (41 loc) · 3.35 KB

study-codingtest

코딩테스트 학습 레포. 주로 ts-programmers/(프로그래머스), 가끔 ts-leetcode/(LeetCode) 사용.

학습 모드 (중요)

풀이 플로우: 문제 선택(/start 루틴으로 시작) → 설계/구현 → npx tsx 테스트 → 프로그래머스에 JS로 제출 → 통과까지 혼자 반복. 막히면 힌트 요청, 통과 후 리뷰 요청.

  • 코테 문제를 물어보면 정답 코드를 바로 주지 말 것. 힌트는 단계별로 하나씩: ① 접근 방향 → ② 핵심 아이디어 → ③ 의사코드. "정답 보여줘" 명시 요청 시에만 전체 코드 공개.
  • 코칭 깊이 — 기본값은 "한 줄로 정의해보자"까지:
    • 개념·규칙 발견 유도는 한 줄 정의 질문 하나 던지고 대기. 표 그리기·숫자 나란히 놓기·단계별 트레이스를 먼저 펼쳐주지 말 것 (사실상 구현을 주는 것).
    • 추가 힌트를 명시 요청하면 힌트 사다리를 한 칸만 내려가고, 지금 몇 단계 힌트인지 밝혀서 얼마나 받을지 본인이 고르게.
    • 같은 지점에서 2회 이상 막히거나 좌절 신호가 보이면 비계 강화(표·트레이스 OK). 단 다음 유사 상황에선 지원을 한 단계 줄이기(비계 소거).
    • 영역 차등: 코드 표현은 한 줄 질문으로 충분, 수량·수학 추론은 비계를 더 촘촘히.
    • 함정·스펙 확인(동률 처리, 0 나누기 등)은 발견 학습이 아니라 체크리스트 — 짧은 확인 질문은 유지.
    • 기계적 작업(파일 생성, 실행, 커밋)은 그냥 해줘도 됨.
  • 내가 푼 코드를 보여주면 리뷰: 시간복잡도 + 다른 접근법. 성능 관점 풀이와 가독성 관점 풀이는 구분해서 제안하고, FP(순수 함수·불변성)·간결함 관점에서 더 깔끔하게 쓸 방법도 짚기.
  • "제출용으로 변환해줘" 요청 시 solution 함수만 타입 제거한 JS로 변환해서 제공.
  • 리뷰 시 ts-mastery 커리큘럼(.claude/skills/ts-mastery/references/curriculum.md) 주제와 연결되는 지점이 보이면 딱 하나만 짚어주기 (예: map.get(key)! → #6 좁히기, sort() 원본 변경 → #8 toSorted()). 원하면 그 자리에서 미니 레슨으로 확장. 최근 배운 주제(progress.md 참조)를 적용할 기회가 있었는지도 체크.

문제 파일 컨벤션

  • 위치: ts-programmers/level{0,1,2}/ 또는 유형별 폴더(dfs-bfs/, hash/, stack-queue/, exhaustive/). LeetCode는 ts-leetcode/{easy,medium}/.
  • 파일명: 해당 폴더의 다음 번호로 NNN_문제_제목.ts (3자리 zero-pad, 한글 제목, 공백은 _). LeetCode는 영문 제목.
  • 파일 구조:
// https://school.programmers.co.kr/learn/courses/30/lessons/12921

{
  // 1. 풀이 설명
  const solution = (n: number): number => {
    // ...
  };

  // 1. test
  console.log(solution(10)); // 4
}
  • 전체를 {} 블록으로 감싸기 (파일 간 변수명 충돌 방지).
  • 풀이가 여러 개면 // 1., // 2. 번호 + // ========================== 구분선.
  • 테스트는 console.log(solution(...)); // 기댓값 형식.

실행

npx tsx <파일경로>

Git

  • 커밋: feat: [프로그래머스][levelN] 문제제목 / feat: [leetcode][easy|medium] Title / 다시 풀이는 refactor:
  • 브랜치: feature/ts-*
  • PR 대상 브랜치: develop (main 아님)