728x90
728x90
[ 42경산 & 알고리즘/42 과제 회고 ][42경산 FDF] 와이어프레임 모델 구현 가이드: 등각 투영 좌표 계산부터 DDA·Bresenham 선 그리기까지2026-04-12 01:19:33TL;DR — 3줄 핵심 요약• 문제: .fdf 파일에는 숫자만 들어 있는데, 화면은 가로와 세로 두 개의 숫자로 위치를 정한다. 3차원 숫자를 2차원 화면 숫자로 바꾸지 못하면 선을 하나도 그릴 수 없다.• 기술/원인: MiniLibX 창은 픽셀 색 값을 담은 1차원 메모리 배열이다. (x, y) 픽셀의 주소는 y * line_len + x * (bpp / 8) 로 계산되고, 그 주소에 4바이트 색 값을 쓰면 화면의 그 점이 바뀐다.• 해결/인사이트: 원본 z[y][x]는 건드리지 않고, 그릴 때마다 중심 정렬 → zoom → z_scale → 회전 → 등각 투영 → shift 순서로 화면 좌표를 새로 계산한 뒤, DDA로 두 점 사이를 픽셀 단위로 채운다.FDF가 하는 일: 파일의 숫자를 선으로 바꾸..
[ 42경산 & 알고리즘/42 과제 회고 ][42경산 push_swap] 11개 명령어로 정렬하기: 그리디의 함정과 이진 기수 정렬 해법2025-09-21 17:33:28들어가며Push_Swap 과제를 성공적으로 해결하기 위한 첫걸음은 문제의 본질을 정확히 이해하는 것이다. 이 과제는 단순히 두 개의 스택을 이용해 데이터를 정렬하는 문제를 넘어, 제한된 명령어 집합으로 원형 리스트를 효율적으로 재배열하는 고유한 제약 조건을 가진 알고리즘 퍼즐이다. 핵심 과제 및 제약 조건이 프로젝트의 공식 문서에 따르면, 목표는 명확하다: 주어진 정수들을 가장 적은 수의 명령어로 정렬하는 것이다[^1]. 이를 위해 반드시 준수해야 할 핵심 규칙과 제약 조건은 다음과 같다. 기본 구조: a와 b라는 두 개의 스택이 주어진다. 프로그램 시작 시, 모든 정수는 스택 a에 위치하며 스택 b는 비어 있다[^1].오류 처리: 입력값에 중복이 있거나, 정수가 아닌 인자가 포함되거나, 정수 범위를 초..
[ 42경산 & 알고리즘/42 과제 회고 ][42경산 Born2beRoot] Rocky Linux 가상 서버 구축: LVM·UFW·SSH·sudo·SELinux 핵심 정리2025-08-05 18:53:21TL;DR — 3줄 핵심 요약• 문제: Born2beRoot는 "서버 한 대를 직접 세워라"는 과제다. 파티션, 방화벽, 원격 접속, 권한, 보안 정책을 각각 설정하고, 평가 때 그 이유를 설명해야 한다.• 기술/원인: 리눅스는 디스크를 논리 볼륨(LVM)으로 나누고, 커널의 netfilter 규칙(UFW)으로 포트를 막고, sshd 설정 파일로 원격 로그인을 제한하고, SELinux라는 커널 수준 접근 제어로 프로세스의 파일 접근을 따로 심사한다. 각 계층이 서로 다른 지점을 막는다.• 해결/인사이트: 순서가 중요하다. 방화벽 포트를 먼저 열고 SSH를 바꾼 뒤, SSH 재시작으로 접속이 끊기지 않는지 확인한다. SELinux 정책 때문에 막히면 setenforce 0으로 원인을 찾고 다시 1로 되돌린..
[ 42경산 & 알고리즘/42 과제 회고 ][42경산 ft_printf] 가변 인자(va_list)로 직접 구현하는 printf: 형식 지정자 처리와 버퍼 최적화2025-07-20 19:28:56TL;DR — 3줄 핵심 요약• 문제: printf는 인자를 몇 개 받을지 컴파일할 때 모른다. 인자의 개수와 타입이 호출마다 다르기 때문이다. 그래서 함수는 서식 문자열을 직접 읽으면서 "다음 인자를 어떤 타입으로 꺼낼지"를 스스로 결정해야 한다.• 기술/원인: 가변 인자는 메모리(또는 레지스터 저장 영역)에 연달아 놓이고, va_list는 그 위치를 가리키는 포인터다. va_arg는 그 포인터를 타입 크기만큼 진행시키며 값을 읽는다. 타입을 잘못 지정하면 엉뚱한 바이트를 읽는다.• 해결/인사이트: 구현은 세 부분으로 나뉜다. 서식 문자열을 훑는 파서, 타입별로 값을 문자열로 바꾸는 변환기, 완성된 문자열을 한 번에 write로 내보내는 출력기. 이 순서로 만들면 디버깅이 쉽다.printf가 실제로 하..
[ 42경산 & 알고리즘/42 과제 회고 ][42경산/C언어] Get Next Line(GNL) 완벽 가이드: 버퍼 크기별 동작 원리와 정적 변수 메모리 관리2025-03-16 18:17:44TL;DR — 3줄 핵심 요약• 문제: read()는 한 줄 단위로 읽지 않는다. 요청한 바이트 수보다 적게 돌려줄 수 있고, 개행이 어디 있는지도 알려주지 않는다. 그래서 "아직 반환하지 못한 나머지"를 함수 밖에 저장해야 한다.• 기술/원인: 시그니처가 char *get_next_line(int fd)로 고정되어 상태를 인자로 넘길 수 없다. 그래서 static 변수를 fd별로 두고, read로 채운 덩어리와 합쳐 개행 앞까지를 반환하고 뒤는 남긴다.• 해결/인사이트: 흐름은 네 단계다. ① 저장된 문자열에서 개행을 찾는다 ② 없으면 read로 이어붙인다 ③ 개행 앞부분을 복사해 반환한다 ④ 나머지를 static에 다시 저장하고 이전 메모리를 free한다. EOF와 오류 경로에서도 static이 가리..
[ 42경산 & 알고리즘/42 과제 회고 ][42경산/C언어] Libft 라이브러리 구현 가이드: 표준 C 라이브러리 함수 재구현과 Makefile 설계2025-03-12 23:45:12TL;DR — 3줄 핵심 요약• 문제: Libft는 표준 C 라이브러리 함수 40여 개를 직접 다시 만드는 과제다. "동작한다"와 "표준과 같다"는 다르고, 평가는 경계값에서 갈린다.• 기술/원인: C 문자열은 '\0'로 끝나는 바이트 배열이고, 포인터는 그 배열의 주소다. 함수 대부분은 이 주소를 진행시키며 바이트를 읽고, 종료 문자를 만나면 멈춘다. 그래서 버퍼 크기, 널 종료, 겹침 여부가 결과를 바꾼다.• 해결/인사이트: 세 가지만 지키면 대부분 통과한다. ① 반환 타입과 값(size_t, char*, int)을 표준과 맞춘다 ② 크기가 0인 경우와 널 종료를 따로 처리한다 ③ memcpy와 memmove, strlcpy와 strncpy의 차이를 구분한다.Part 1: libc 함수 다시 만들기문..- [ 42경산 & 알고리즘/자료구조 & 코테 ][코딩테스트] 코드트리(CodeTree) 학습 플랫폼 심층 분석: 백준·프로그래머스와의 차이점과 실전 활용기2025-03-09 23:19:27TL;DR — 3줄 핵심 요약• 문제: 코딩테스트 학습은 문제 수를 늘리는 것만으로는 점수가 오르지 않는다. 어떤 유형을 어떤 순서로 풀지, 지금 실력이 어느 수준인지 판단할 기준이 필요하다.• 기술/원인: 코드트리는 문제를 난이도 단계(Trail)로 묶고, 온라인 코딩캠프에서 유형별 풀이법을 강의하며, COEIC 시험으로 현재 수준을 점수화한다. 학습 루프가 "강의로 방법을 배우고 → 유형 문제를 풀고 → 시험으로 측정"으로 닫힌다.• 해결/인사이트: 두 달 동안 가장 크게 바뀐 것은 dx·dy 배열 같은 좌표 이동 기법을 익힌 뒤 문제를 푸는 속도였다. 습관은 디스코드 봇의 스트릭(연속 학습일)으로 유지했고, 50일을 넘겼다.이 글의 위치글또 10기에서 코드트리 2개월 이용권을 받아 쓴 두 번째 후기..
[ 42경산 & 알고리즘/자료구조 & 코테 ]코드트리 2025 리뉴얼 완전 분석: UI/UX 개편부터 백준·프로그래머스와의 비교까지2025-02-09 11:56:40TL;DR — 3줄 핵심 요약• 문제: 코딩테스트 학습 서비스 코드트리가 2025년 초 UI와 학습 기능을 크게 바꿨다. 무엇이 달라졌고 어디에 쓰면 좋은지 정리가 필요했다.• 기술/원인: 기업별 실력 진단과 맞춤 코스가 추가되고, 디자인이 정리되고 한국어·영어를 지원하며, 커리큘럼을 Trail로 바꿨다. 예시 코드는 5개 언어로 제공한다.• 해결/인사이트: 기초 학습과 유형 정리는 코드트리가 낫고, 문제 수와 실전 응시 환경은 백준·프로그래머스가 낫다. 세 플랫폼은 용도가 달라 함께 쓰는 편이 좋다.이 포스팅은 코드트리 x 글또 블로그 챌린지 2기를 통해 코드트리 체험권을 받아 작성한 후기입니다. 배너 이미지는 글또 김서현님이 제작해주셨습니다.들어가며: 1년 만의 두 번째 후기블로그를 운영하다 보면 조..
728x90
728x90