Skip to content

seyeon22222/42PortFolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

42Seoul 본과정 진행상황

0서클

  • Libft : 125점 / 보너스 O

    • 기본적인 라이브러리를 생성한 것으로 윗서클 과제에서도 사용이 됨
    • Makefile을 통해 make / make bonus 입력을 통해서 아카이브를 생성
    • 이를 사용해서 다른 곳에서도 사용가능
    • 자료구조 중 하나인 Linked List(연결리스트)를 보너스문제에서 구현

1서클

  • Printf : 100점 / 보너스 X

    • printf를 구현하는 과제로, 처음으로 등장하는 가변인자 개념을 통해서 진행하는 과제
    • Conversion의 종류인 cspdiuxX를 다뤘고, 보너스는 진행하지 않음
    • 보너스의 경우, 다양한 플래그들이 주어지는데 이를 통해서 원본 printf와 동일한 동작을 구현
    • 고려해야하는 경우가 너무 많아서 패스
  • Get_next_line : 125점 / 보너스 O

    • fd를 통해서 입력값을 받아서 "\n", 즉 개행문자까지 한 줄씩 잘라서 반환해주는 함수를 구현하는것
    • 이도 동일하게 뒤의 과제에서 유용하게 사용
    • Norm의 규정에 맞추는게 어려웠었던 과제로, fd에 대해서 짚고 넘어갈 수 있는 문제
    • 보너스의 경우, fd가 여러개 들어왔을 때, 이전의 fd를 잃어버리지 않고 한번에 담아두는 것으로
    • 2차원 배열을 통해서 해결을 함 / 연결리스트로도 해결이 가능하다고 함
  • Born2beroot : 100점 / 보너스 X

    • 데비안을 설치해서 기본적인 OS에 관해서 다루는 과제
    • 가상머신(버츄얼박스)를 사용해서 OS를 설치하는 것
    • 방화벽, SSH, 시스템의 사용상태 등등 기본적인 시스템을 배움
    • 보너스의 경우, 웹서버 구축(마리아 DB사용), 파티션 재구축을 해야하는데, 할 줄 몰라서 진행하지 않음

2서클

  • Push_swap : 125점 / 보너스 O

    • 2서클에서 가장 난이도가 높다는 과제로 정렬되지 않은 수열을 받았을 때, 이를 정렬하는데
    • 가장 효율적으로 정렬해서 명령어의 개수가 적게 나오도록 만드는 과제
    • 총 5가지의 방법으로 가능하다고 알려져있음.
    • 퀵정렬, 병합정렬 , 모래시계 정렬, 그리디 알고리즘, DP
    • 이중에서 모래시계 정렬을 사용해서 해결
    • 모래시계 알고리즘의 경우 이 문제만을 위한 풀이법이라고 봐도 무방함
    • 보너스의 경우, 정렬이 정확하게 되었는지 판단하는 체커를 만드는 과제
    • 약간의 예외처리만 조심하면 문제없음
    • 개인적으로 처음에 ARGV를 처리하는 부분이 까다로움
    • 정렬에서 최적화를 진행하는 것도 생각을 해야하는 과제
  • So_long : 125점 / 보너스 O

    • 처음으로 그래픽 라이브러리(mlx)를 사용해서 구현하는 과제
    • mlx 사용법을 어느정도 찾아보고 나서 진행을 해야함
    • 원하는 이미지파일을 토대로 게임프로그램을 만듬
    • 맵의 유효성 판단을 위해, dfs를 사용
    • 보너스에서 최소한의 구현으로 넘어갔는데, 보통은 mlx_loop_hook을 사용해야함
  • Pipex : 115점 / 보너스 O

    • 구현은 다 했으나 보너스에서 append 대신 trunck를 적어서 점수를 다 못받음
    • ./pipex file1 cmd1 cmd2 file2 의 형식으로 구현을 해야함
    • 실제 쉘에서의 파이프를 구현해서, 데이터의 전송 및 파일에 저장이 잘 되는 지를 알아가는 과제
    • pipe란 무엇인가, fd에 관해서 좀 더 깊게 알아갈 수 있는 과제

3서클

  • Minishell : 125점 / 보너스 O

    • 악명높은 과제로 팀과제의 첫 시작
    • bash를 구현하는 것으로, bash-like의 프로그램 구현
    • 자세한 내용은 옆의 링크로 이동 - https://github.com/seyeon22222/minishell
  • Philosophers : 100 점 / 보너스 X

    • 멀티 쓰레드, 동기화에 관한 내용을 배우는 과제
    • 공유자원과 그를 관리하는 방법에 대해서 배움
    • 보너스는 쉽다고 하는데, 하기 싫어서 진행하지 않음

4서클

  • NetPractice : 100점 / 보너스 X

    • 네트워크의 기본을 알아보는 과제로 비트연산을 통해서 네트워크의 연결을 해보는 문제
  • MiniRT : 100점 / 보너스 X

    • 두 번째 팀과제
    • 기본적인 레이트레이싱에 대해서 알아보는 과제
    • mlx를 통해서 그림을 직접 랜더링 해보고, 각 물체를 어떻게 랜더링해야하는지 알아볼 수 있는 과제
    • 난이도가 있다고 느껴질 수 있으나, 직접해보면 어느정도 흥미가 생김
  • CPP00~04 : 100점 / 보너스 X

    • CPP의 클래스의 기본 문법부터 OCF까지 알아볼 수 있는 과제
    • 각 서브젝트마다 중점적으로 사용하는 문법이 다름
    • 과제를 진행하면 CPP의 문법 및 OOP의 기본적인 사용법을 익힐 수 있음

5서클

  • CPP05~09 : 100점 / 보너스 X

    • CPP의 문법에 대해서 세부적으로 사용해보는 과제들
    • 각 서브젝트마다 요구하는 내용이 다르며, 7~9에서는 template를 사용법을 익히게 됨
    • 09번의 마지막문제는 merge-insort정렬 중 하나인 ford-johnson알고리즘을 사용해보는 과제
    • 포드존슨 알고리즘이 많이 생소해서 다소 난해했던 과제
  • Inception : 100점 / 보너스 X

    • 도커의 사용에 대해서 알아보는 과제
    • 익숙치 않은 개념이고, 가상머신 환경에서 테스트를 해보다보니 많이 까다로운 과제
    • 도커에 대해서 배울 수 있는 과제고, 각각이 어떻게 유기적으로 작동하는지 알아보는 과제지만 다시는 하고 싶지 않은 과제 중 하나
  • IRC : 100점 / 보너스 X

    • 세 번째 팀과제로, 소켓통신에 대해서 배워보는 과제
    • 동기, 비동기 입력에 대해서 배우고 C++98을 통해서 소켓통신의 기본적인 동작 및 사용을 해볼 수 있는 과제
    • IRC(Internet Relay Chat)이라는 상용프로그램에 맞춰서 채팅 서버를 구현하는 과제
    • 추후 마지막 과제를 진행할 때, 웹소켓과는 다르지만 기본적인 소켓에 대한 이해를 하고 넘어가는 과제
    • 서버의 동작 파트를 맡아서 진행

6서클

  • Ft_transcendence : 105점 / 보너스 5점

    • 마지막 과제로 3~5명의 팀을 이루어서 진행하는과제
    • 게임버전을 두 개를 만들어서 각각 v1, v2로 나누었고, 각각의 백엔드 및 프론트엔드의 기능은 동일함
    • 웹소켓을 관리하는 것에 대한 어려움과 재미를 느낄 수 있었던 과제
    • 처음에 백엔드 서버 및 프론트엔드 서버를 구축하는데 많은 어려움이 있으나, 한 번 구축하고 나면 나머지는 구현하고자 하는 기능을 구현하면 되는 과제
    • 팀원이 많다보니 조율하고 파트를 나누는 과정에서 많은 어려움을 느낌
    • SPA(Single Page Application)을 처음으로 배웠고, Https등 웹사이트 보안에 대해서 고찰 해 볼 수 있는 과제
    • 사용 기술 스택 : 백엔드(Django), 프론트엔드(Vanilla JavaScript, Bootstrap), 게임(WebGL)

About

42서울 전체 과제 정리 리포지토리입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors