Repository files navigation
기본적인 라이브러리를 생성한 것으로 윗서클 과제에서도 사용이 됨
Makefile을 통해 make / make bonus 입력을 통해서 아카이브를 생성
이를 사용해서 다른 곳에서도 사용가능
자료구조 중 하나인 Linked List(연결리스트)를 보너스문제에서 구현
printf를 구현하는 과제로, 처음으로 등장하는 가변인자 개념을 통해서 진행하는 과제
Conversion의 종류인 cspdiuxX를 다뤘고, 보너스는 진행하지 않음
보너스의 경우, 다양한 플래그들이 주어지는데 이를 통해서 원본 printf와 동일한 동작을 구현
고려해야하는 경우가 너무 많아서 패스
Get_next_line : 125점 / 보너스 O
fd를 통해서 입력값을 받아서 "\n", 즉 개행문자까지 한 줄씩 잘라서 반환해주는 함수를 구현하는것
이도 동일하게 뒤의 과제에서 유용하게 사용
Norm의 규정에 맞추는게 어려웠었던 과제로, fd에 대해서 짚고 넘어갈 수 있는 문제
보너스의 경우, fd가 여러개 들어왔을 때, 이전의 fd를 잃어버리지 않고 한번에 담아두는 것으로
2차원 배열을 통해서 해결을 함 / 연결리스트로도 해결이 가능하다고 함
Born2beroot : 100점 / 보너스 X
데비안을 설치해서 기본적인 OS에 관해서 다루는 과제
가상머신(버츄얼박스)를 사용해서 OS를 설치하는 것
방화벽, SSH, 시스템의 사용상태 등등 기본적인 시스템을 배움
보너스의 경우, 웹서버 구축(마리아 DB사용), 파티션 재구축을 해야하는데, 할 줄 몰라서 진행하지 않음
2서클에서 가장 난이도가 높다는 과제로 정렬되지 않은 수열을 받았을 때, 이를 정렬하는데
가장 효율적으로 정렬해서 명령어의 개수가 적게 나오도록 만드는 과제
총 5가지의 방법으로 가능하다고 알려져있음.
퀵정렬, 병합정렬 , 모래시계 정렬, 그리디 알고리즘, DP
이중에서 모래시계 정렬을 사용해서 해결
모래시계 알고리즘의 경우 이 문제만을 위한 풀이법이라고 봐도 무방함
보너스의 경우, 정렬이 정확하게 되었는지 판단하는 체커를 만드는 과제
약간의 예외처리만 조심하면 문제없음
개인적으로 처음에 ARGV를 처리하는 부분이 까다로움
정렬에서 최적화를 진행하는 것도 생각을 해야하는 과제
처음으로 그래픽 라이브러리(mlx)를 사용해서 구현하는 과제
mlx 사용법을 어느정도 찾아보고 나서 진행을 해야함
원하는 이미지파일을 토대로 게임프로그램을 만듬
맵의 유효성 판단을 위해, dfs를 사용
보너스에서 최소한의 구현으로 넘어갔는데, 보통은 mlx_loop_hook을 사용해야함
구현은 다 했으나 보너스에서 append 대신 trunck를 적어서 점수를 다 못받음
./pipex file1 cmd1 cmd2 file2 의 형식으로 구현을 해야함
실제 쉘에서의 파이프를 구현해서, 데이터의 전송 및 파일에 저장이 잘 되는 지를 알아가는 과제
pipe란 무엇인가, fd에 관해서 좀 더 깊게 알아갈 수 있는 과제
Philosophers : 100 점 / 보너스 X
멀티 쓰레드, 동기화에 관한 내용을 배우는 과제
공유자원과 그를 관리하는 방법에 대해서 배움
보너스는 쉽다고 하는데, 하기 싫어서 진행하지 않음
NetPractice : 100점 / 보너스 X
네트워크의 기본을 알아보는 과제로 비트연산을 통해서 네트워크의 연결을 해보는 문제
두 번째 팀과제
기본적인 레이트레이싱에 대해서 알아보는 과제
mlx를 통해서 그림을 직접 랜더링 해보고, 각 물체를 어떻게 랜더링해야하는지 알아볼 수 있는 과제
난이도가 있다고 느껴질 수 있으나, 직접해보면 어느정도 흥미가 생김
CPP의 클래스의 기본 문법부터 OCF까지 알아볼 수 있는 과제
각 서브젝트마다 중점적으로 사용하는 문법이 다름
과제를 진행하면 CPP의 문법 및 OOP의 기본적인 사용법을 익힐 수 있음
CPP의 문법에 대해서 세부적으로 사용해보는 과제들
각 서브젝트마다 요구하는 내용이 다르며, 7~9에서는 template를 사용법을 익히게 됨
09번의 마지막문제는 merge-insort정렬 중 하나인 ford-johnson알고리즘을 사용해보는 과제
포드존슨 알고리즘이 많이 생소해서 다소 난해했던 과제
도커의 사용에 대해서 알아보는 과제
익숙치 않은 개념이고, 가상머신 환경에서 테스트를 해보다보니 많이 까다로운 과제
도커에 대해서 배울 수 있는 과제고, 각각이 어떻게 유기적으로 작동하는지 알아보는 과제지만 다시는 하고 싶지 않은 과제 중 하나
세 번째 팀과제로, 소켓통신에 대해서 배워보는 과제
동기, 비동기 입력에 대해서 배우고 C++98을 통해서 소켓통신의 기본적인 동작 및 사용을 해볼 수 있는 과제
IRC(Internet Relay Chat)이라는 상용프로그램에 맞춰서 채팅 서버를 구현하는 과제
추후 마지막 과제를 진행할 때, 웹소켓과는 다르지만 기본적인 소켓에 대한 이해를 하고 넘어가는 과제
서버의 동작 파트를 맡아서 진행
Ft_transcendence : 105점 / 보너스 5점
마지막 과제로 3~5명의 팀을 이루어서 진행하는과제
게임버전을 두 개를 만들어서 각각 v1, v2로 나누었고, 각각의 백엔드 및 프론트엔드의 기능은 동일함
웹소켓을 관리하는 것에 대한 어려움과 재미를 느낄 수 있었던 과제
처음에 백엔드 서버 및 프론트엔드 서버를 구축하는데 많은 어려움이 있으나, 한 번 구축하고 나면 나머지는 구현하고자 하는 기능을 구현하면 되는 과제
팀원이 많다보니 조율하고 파트를 나누는 과정에서 많은 어려움을 느낌
SPA(Single Page Application)을 처음으로 배웠고, Https등 웹사이트 보안에 대해서 고찰 해 볼 수 있는 과제
사용 기술 스택 : 백엔드(Django), 프론트엔드(Vanilla JavaScript, Bootstrap), 게임(WebGL)
About
42서울 전체 과제 정리 리포지토리입니다.
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.