Post

2026-04-15 TIL (37일차)

2026-04-15 TIL (37일차)

코딩 테스트

참고 강의


1.그리디 알고리즘

“현재 상황에서 지금 당장 좋은 것만 고르는 방법”

  • 핵심 요구 역량: 특정 알고리즘을 달달 외우고 있는지보다, 문제를 풀기 위한 최소한의 창의적인 아이디어를 떠올릴 수 있는지를 평가합니다.
  • 정당성 분석 필수: 단순히 현재 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해(Optimal Solution)를 구할 수 있는지 검토하는 과정이 반드시 필요합니다.
  • 코테에서의 그리디 특징:
    • 일반적인 현실 상황에서 탐욕법은 최적의 해를 보장하지 못할 때가 많습니다.
    • 하지만 코딩 테스트에 출제되는 그리디 문제는, 탐욕법으로 얻은 해가 곧 최적의 해가 되도록 의도적으로 설계되어 출제됩니다. 이를 추론하고 증명할 수 있어야 합니다.
    • 예시: 거스름돈 문제 (큰 화폐 단위가 항상 작은 화폐 단위의 배수 형태일 때만 그리디가 성립함)


2. 구현

“머릿속에 있는 알고리즘 아이디어를 실제 소스 코드로 정확하게 번역하는 과정”

  • 특징: “어떻게 풀면 되겠다”라고 풀이를 떠올리는 것은 쉽지만, 막상 소스 코드로 옮겨 적으려고 하면 타이핑하기 까다롭고 손이 많이 가는 문제를 흔히 구현 유형이라고 부릅니다.

  • 구현이 까다로운 문제의 대표적인 예시:
    1. 알고리즘 자체는 간단한데, 코드가 지나칠 만큼 길어지고 예외 처리가 많은 문제
    2. 실수 연산을 다루고, 특정 소수점 자리까지 정확하게 맞춰서 출력해야 하는 문제
    3. 문자열을 특정한 기준에 따라서 복잡하게 끊어 읽고 처리해야 하는 문제 (이 경우 파이썬(Python)이 상대적으로 매우 유리함)
    4. 적절한 표준 라이브러리(Standard Library)를 찾아서 적재적소에 사용해야 하는 문제 (예: 모든 순열과 조합을 찾아주는 파이썬의 itertools 등)
  • 구현의 주요 세부 유형:
    • 시뮬레이션 (Simulation): 문제에서 제시한 일련의 알고리즘이나 명령들을 한 치의 오차 없이 순서대로 따라가며 수행하는 유형
    • 완전 탐색 (Brute-Force): 가능한 모든 경우의 수를 주저 없이 다 계산해서 정답을 찾는 유형
      • 코테 꿀팁: 구현 문제에서는 보통 2차원 공간(행렬, Matrix)상에서 상하좌우로 이동하는 방향 벡터(dx, dy)를 설정하여 푸는 테크닉이 매우 자주 출제됩니다.*




CS

CS를 공부해야하는 이유 및 공부법

참고 강의


“컴퓨터 과학은 단순한 키워드 암기 과목이 아니다.”

  • 핵심 마인드셋: 컴퓨터 과학(CS)은 사전식으로 단어 뜻을 암기하는 것이 아닙니다. 프로그램이 실행되는 원리를 이해하고 실제 코드에 어떻게 적용할 수 있는지 고민하는 ‘이해와 적용’의 학문입니다.
  • 실무 = 면접: 단순 암기로는 무수히 쏟아지는 면접의 ‘꼬리 질문’이나 실무에서의 ‘트러블 슈팅(장애 해결)’을 감당할 수 없습니다. 따라서 개발 실무를 위한 컴퓨터 과학과 기술 면접을 위한 컴퓨터 과학은 완전히 동일합니다.

공통적으로 반드시 알아야 할 5대 CS 지식은 다음과 같습니다.




1. 컴퓨터 구조

컴퓨터 구조는 단순히 회로를 암기하는 과목이 아닙니다. 뒤에 나올 운영체제(OS)를 깊이 있게 이해하기 위한 튼튼한 기반 지식이며, 현대 클라우드 환경에서 하드웨어 성능과 비용(스펙)을 판단하는 필수 재료입니다.

  • 컴퓨터가 이해하는 정보
    • 데이터(Data)와 명령어(Instruction)
    • 데이터 표현 방식 (인코딩): 현실 세계의 문자, 이미지, 숫자 등이 컴퓨터 내부에서 어떻게 01로 변환되어 표현되는지 이해해야 합니다.
  • 컴퓨터의 4대 핵심 부품
    • CPU: 명령어를 읽고 해석하여 실행
    • 메모리(RAM) + 캐시 메모리: 실행 중인 프로그램과 데이터를 임시 저장
    • 보조기억장치 (HDD, SSD): 전원이 꺼져도 데이터를 영구적으로 보관
    • 입출력장치 (I/O): 사용자와 컴퓨터 간의 소통 창구




2. 운영체제

윈도우, macOS, 리눅스, 안드로이드 등 컴퓨터 하드웨어를 관리하고 동작시키는 가장 근간이 되는 핵심 프로그램입니다. 우리가 작성한 모든 프로그램은 직·간접적으로 운영체제의 도움을 받아 실행됩니다.

  • 커널(Kernel)과 시스템 콜(System Call)
    • 커널: 운영체제의 심장(엔진)과도 같은 핵심 기능
    • 시스템 콜: 개발자가 만든 프로그램이 커널에 하드웨어 사용 등의 도움을 요청하는 방법
  • 운영체제의 2대 핵심 기능
    1. 프로세스와 스레드 관리
      • 프로세스: 현재 메모리에 올라가 실행 중인 프로그램
      • 스레드: 프로세스 내의 더 작은 실행 단위
      • 핵심 개념: 동시성 다발적 실행 환경에서의 동기화, 교착 상태(Deadlock) 해결
    2. 자원(Resource) 할당 및 관리
      • CPU 스케줄링: 어떤 프로세스에게 CPU를 먼저, 얼마 동안 할당할 것인가?
      • 가상 메모리: 한정된 메모리를 어떻게 효율적으로 쪼개고 관리할 것인가?
      • 파일 시스템: 보조기억장치의 데이터를 파일과 디렉토리로 어떻게 관리할 것인가?




3. 자료구조

데이터(자료)를 메모리 상에서 얼마나 효율적으로 관리하고 구조화할 것인가를 다루는 학문입니다.

  • 효율성의 판단 척도
    • 시간 복잡도 (Time Complexity): 연산 속도가 얼마나 빠른가?
    • 공간 복잡도 (Space Complexity): 메모리를 얼마나 적게 사용하는가?
  • 주요 자료구조
    • 기초 재료: 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue)
    • 심화 및 면접 단골 주제: 기초 재료를 조합하여 만든 해시 테이블(Hash Table), 트리(Tree), 그래프(Graph)
    • 트리의 순회(Traversal) 방법이나 그래프의 최단 경로 탐색 등이 기술 면접 및 코딩 테스트의 핵심으로 자주 출제됩니다.




4. 네트워크

현대의 거의 모든 프로그램은 인터넷을 통해 외부와 연결됩니다. 클라이언트와 서버가 어떻게 정보를 안전하고 빠르게 주고받는지 이해하는 것은 개발자의 필수 소양입니다.

  • 네트워크 계층 구조
    • 통신이 이루어지는 과정을 정형화된 단계(계층)로 나눈 모델
    • 대표적으로 OSI 7계층, TCP/IP 4계층 모델이 있습니다.
  • 프로토콜 (Protocol)
    • 컴퓨터 간에 정보를 주고받기 위해 정해둔 ‘규칙’이자 ‘약속’
    • 필수 프로토콜: IP, TCP, UDP, HTTP, DNS
  • 안정적인 트래픽 처리 (백엔드 핵심)
    • 사용자가 몰려도 서버가 터지지 않게 유지하는 실무 기술
    • 프록시(Proxy) & 리버스 프록시, 게이트웨이
    • 트래픽 분산을 위한 로드 밸런싱(Load Balancing)
    • 서버 확장 기법인 스케일 아웃(Scale-out)스케일 업(Scale-up)




5. 데이터베이스

웹/앱 서비스에서 발생하는 회원 정보, 게시글 등 영구적으로 보존해야 하는 상태(State) 데이터를 저장하고 관리하는 시스템입니다. 파일 시스템(File System)과 비교하여 DB를 왜 사용해야 하는지 명확히 답할 수 있어야 합니다.

  • 기초 개념
    • DBMS: 데이터베이스를 관리해 주는 전용 소프트웨어 시스템
    • 엔티티(Entity): DB에 저장되는 객체 (예: 회원, 상품)
    • 스키마(Schema): 데이터가 저장되는 형태, 구조, 틀 (달고나 틀에 비유)
  • DBMS의 2가지 유형
    1. RDBMS (관계형 데이터베이스): 틀(스키마)이 명확히 고정되어 있어 데이터의 일관성 유지에 좋음 (사용 언어: SQL)
    2. NoSQL (비관계형 데이터베이스): 틀이 유연하여 비정형 데이터나 대용량 데이터 처리에 유리 (예: MongoDB, Redis)
  • 트랜잭션(Transaction)과 ACID
    • 트랜잭션: 쪼갤 수 없는 하나의 논리적 작업 단위
    • ACID 성질: 트랜잭션이 안전하게 처리되기 위한 4가지 원칙 (원자성, 일관성, 고립성, 지속성)
  • 실무 SQL과 설계
    • 조인(Join), 서브쿼리, 뷰(View), 성능 최적화를 위한 인덱스(Index)
    • ERD 다이어그램, 정규화(Normalization)




개별 지식: 위의 5가지 공통 지식 외에도, 지원하는 직군(프론트엔드/백엔드/AI 등)이나 사용하는 언어(C++/Unreal/Java), 프레임워크, 또는 이력서 상의 프로젝트 경험에 따라 달라지는 개별 지식은 채용 공고와 본인의 경험을 바탕으로 별도로 정리해야 합니다.

TA

머티리얼 노드 분석: 수동 마스크 블렌딩

튜터님 노드

오늘 머티리얼 그래프는 두 가지 색상(노란색, 분홍색)을 SphereMask를 이용해 합성하는 구조입니다. 각 노드의 역할과 흐름은 다음과 같습니다.

노드별 기능 분석

  1. 마스크 영역 생성 (SphereMask)
    • TexCoord[0]: 2D 표면의 UV 좌표(0~1)를 가져옵니다. (A에 연결)
    • 0.5, 0.5 (Constant2Vector): UV의 정중앙 좌표입니다. (B에 연결)
    • 결과: 중심(0.5, 0.5)을 기준으로 Radius(0.3) 반경만큼의 하얀색 원(값이 1)과 까만색 배경(값이 0)을 가진 마스크 이미지를 만들어냅니다. (Hardness 100으로 테두리가 매우 뚜렷함)
  2. 첫 번째 색상 칠하기 (Top Branch)
    • 노란색 Constant와 앞서 만든 원형 마스크를 Multiply(곱하기) 합니다.
    • 결과: 까만 배경(0)에 노란색 원(1 * 노랑)이 만들어집니다.
  3. 배경 영역 반전하기 (1-x 노드 활용)
    • 1-x (OneMinus): 입력된 값을 1에서 뺍니다. 즉, 하얀 원은 까맣게(1->0), 까만 배경은 하얗게(0->1) 마스크가 반전됩니다.
    • 이렇게 반전된 마스크와 분홍색 ConstantMultiply 합니다.
    • 결과: 가운데가 까맣게 뚫린 분홍색 배경이 만들어집니다.
  4. 최종 합성 (Add)
    • 노란색 원(Top)과 분홍색 배경(Bottom)을 Add(더하기)로 합칩니다.
    • 결과: 분홍색 배경 한가운데에 노란색 원이 있는 최종 결과물이 완성됩니다.

핵심 이 전체 노드 구조 (A * Mask) + (B * (1 - Mask))는 언리얼 엔진의 Lerp 노드가 내부적으로 계산하는 수학 공식과 완벽하게 동일합니다. 마스크와 1-x의 작동 원리를 직관적으로 이해하기 아주 좋은 예시입니다!




AI 활용

1. Claude Code CLI 기반 개발 환경 세팅

Claude Code는 터미널에서 직접 실행하며 로컬 코드베이스를 다루는 AI 에이전트 CLI(Command Line Interface) 도구입니다.

  • 터미널 기반 실행 (CLI 환경)
    • 별도의 창이 아닌, 기본 터미널을 열어서 명령어로 구동해야 합니다.
    • 체크 포인트: 별도의 VS Code 확장 프로그램(Extension) 버전이 있는지, 혹은 VS Code ‘내장 터미널(Integrated Terminal)’에서 바로 구동하는 방식을 사용할지 검색 및 테스트해 볼 것.
  • 로컬 프로젝트(GitHub) 연동
    • Claude Code CLI가 분석하고 작업할 대상 코드가 필요하므로, GitHub에 있는 AI 관련 레포지토리를 먼저 로컬로 clone 해옵니다. (이후 해당 폴더로 이동하여 CLI 실행)
  • 필수 주의사항 (환경 세팅 적용)
    • 설치나 환경 세팅이 완료된 직후에는 반드시 터미널 창을 완전히 껐다가 다시 켜거나, VS Code 자체를 재시작해야 새로운 설정값이 정상적으로 인식됩니다.




2. 하네스(Harness) 시스템과 더블 체크

CI/CD 및 에이전트 파이프라인에서의 검증 구조에 대한 개념입니다.

  • 하네스 더블 체크 (Double Check)
    • 메인 시스템(주인/마스터 노드)이 특정 작업(오더)을 지시합니다.
    • 지시를 받은 즉시 바로 실행하는 것이 아니라, 그 밑에 연결된 서브 에이전트들이 해당 작업의 유효성이나 오류를 교차 검증(더블 체크)하는 안전망 구조로 파악됩니다. (※ 추후 작동 원리 딥다이브 필요)




3. Trello AI (스마트 일정 관리)

생산성 툴을 활용한 프로젝트 관리 자동화입니다.

  • AI 일정 관리 지원: 칸반보드 툴인 트렐로(Trello)의 AI 기능이 단순한 티켓 관리를 넘어, 일정 관리와 작업 스케줄링까지 알아서 도와주는 수준으로 발전했습니다. 개인 프로젝트나 협업 시 적극적으로 활용해 볼 가치가 있습니다.
This post is licensed under CC BY 4.0 by the author.