42seoul(9)
-
42 SEOUL, 라 피씬 후기 -1
42 서울이란? 이노베이션 아카데미에서 시행하는 정부 지원 SW 인재 양성 프로그램으로, 프랑스의 에꼴42의 교육 프로그램을 차용해 한국에 적용함. 근데 42가 머임 ?_? 지독한 컨셉,, 지원금도 42분,,, 외부에서 오는 행사 제외한 자체 행사는 거의 42분에 시작한다. 9시 42분,, 11시 42분,,,, 4시 42분,,, 은하수를 여행하는 히치하이커를 위한 안내서라는 영화에서 Deepthought라는 귀여운 컴퓨터가 750만 년 동안 삶, 우주, 그리고 모든 것에 대한 절대적인 답을 구했는데 그게 42다. 그냥 다른 거 없이 42다. 나였으면 망치로 컴퓨터 부셨는데 그건 세돌이도 마찬가지 아니냐? 아무튼 영화 안 좋아하는데 나름 재밌었음 삶, 우주, 그리고 모든 것을 알아내는 데는 750만 년 걸..
2021.07.16 -
42CURSUS) push_swap (입, 출력)-2
Option '+', '-', ' ', 숫자를 제외한 모든 입력값은 Error를 반환. Main() 먼저 스택을 만들어야 하는데, exit() 구조 상 함수 중간중간에 프로그램을 종료시키는 일이 잦고, 따라서 Memory Leaks의 부담이 커지게 된다. 그래서 main에서 각 스택의 뚜껑과 바닥, 스택들의 크기, 명령어들이 들어갈 문자열 포인터가 들어있는 stack 구조체를 스택 메모리에 생성해주고, 해당 구조체를 가리키는 구조체 포인터 변수를 하나 생성했다. t_stack_stack; t_stack*stack; stack = &_stack; 이렇게 하면 프로그램과 동시에 해당 프로그램이 가지고있던 stack memory는 모든 값을 pop하고 종료. exit() 함수에서도 문제없이 해제를 할 수가 있..
2021.07.16 -
42CURSUS) push_swap (과제 정리)-1
What Push Swap push swap은 껨이당. a, b 두 개의 스택을 가지고 시작하며, a에는 중복되지 않는 양 || 음수를 담고 b는 비워둔다. 목표는 a스택에 오름차순(작은 수부터 큰 수로)으로 정렬하는 것이다. 게임은 아래의 동작들로 수행됨 sa : a의 첫 번째 값과 두 번째 값 교체(값이 하나거나 없으면 동작하지 않음) sb : b의 첫 번째 값과 두 번째 값 교체(값이 하나거나 없으면 동작하지 않음) ss : sa & sb pa : b의 가장 앞의 요소를 a에 push 해줌.(b가 없으면 동작 X) pb : a의 가장 앞의 요소를 b에 push 해줌.(a가 없으면 동작 X) ra : a의 모든 요소를 1만큼 앞으로 이동 시키고, 맨 위의 값을 맨 뒤로 넘긴다. rb : b의 모든 요..
2021.07.15 -
42 CURSUS / ft_printf_04 (Flow chart)
이전 플로우 차트에서 파싱을 통해 플래그와 전체 너비, 정밀도, 캐스팅 타입의 크기, 타입을 담은 구조체 opt가 만들어졌다면 해당 구조체와 지금까지 출력한 문자열의 길이인 len을 인자로 받아온 후 '타입'에 따라 각기 다른 함수로 보낸다. c, s, %의 경우는 옵션이 간단하기에 flag에서 '-'플래그가 있는지 없는지 정도를 통해 공백을 넣어주거나 정밀도만큼 문자열을 출력한다. number의 경우는 위 문자, 문자열에 비해 다양한 옵션을 가지고 있어 복잡해지는데, 기본적으로 플래그, 정밀도의 조합에 따라 꽤 많은 예외가 발생하게 되어 잘 계산하는 것이 중요하다.(+ value가 0일 경우) 기본적으로 정밀도가 수의 길이보다 작다면 무시되고 수의 길이보다 크다면 그 만큼 0이 출력된다. 그 앞에 +,..
2021.07.05 -
42 CURSUS / ft_printf_03 (Flow chart)
일단 지금까지 나온거 플로우 차트로 그려보았음 화살표라던가 컨벤션이 있을테지만 아직 제대로 쓸 줄을 모름 libft.h는 libft의 함수를 담고, 아카이빙을 먼저 함. printf는 printf의 함수 및 libft.h를 import하여 ft_printf.h를 include하는 *.c 파일에서 libft를 사용할 수 있게 함. 메이크파일은 먼저 $(MAKE) -C 명령어를 이용해 libft.a를 만든 후 cp 명령어로 이름을 libftprintf.a로 바꾸고 ar -rcs 옵션을 통해 ft_printf의 새로운 오브젝트들을 추가해줌. 함수는 while문을 이용해 고정 인자를 돌며 '%'를 만나면 ft_check_obj 함수에 va_list와 str + 1의 포인터, 그리고 최종 문자열의 길이를 담을 l..
2021.06.21 -
42 CURSUS / ft_printf_02
Printf_format_placeholder 까먹었을까봐 다시 적는 프엪의 형식 %[parameter][flags][width][.precision][length]type Parameter (optional) Parameter는 Posix 환경에서만 사용 가능하고 C99에서는 불가하다. 필드에 주어진 옵션 값을 통해 va_list에 직접 접근할 수 있다. // 예를 들어 다음과 같이 _num$를 통해 _num번째 값을 받아올 수 있다. printf("인자 순서 : %1$d, %2$d\n2번째 : %2$d \n1번째 : %1$d \n", 42, 4242); > 인자 순서 : 42, 4242 > 2번째 : 4242 > 1번째 : 42 Flags 다양한 필드 중 가장 앞에 나오는 flags는 출력의 전체 방..
2021.06.19