본문 바로가기

전체 글

(129)
[swift] PLS에서의 closure, swift에서의 closure swift는 함수형 언어이다. 함수형 언어라는 것은 함수가 일급 객체 (first-class object)라는 말이다. 그렇기 때문에 swift에서의 함수는 일급함수이며 일급 객체가 가지는 특성을 모두 가진다. 그렇다면 어떤 객체가 일등급이 되어 서울대에 갈 수 있는가(?) 일급 객체의 조건 1. 런타임에도 객체 생성 가능해야 함 2. 파라미터로 객체를 전달할 수 있어야 함 3. 반환값으로 객체를 전달할 수 있어야 함 4. 데이터 구조 안에 객체를 저장할 수 있어야 함 5. 할당에 사용된 이름과 관계없이 고유한 구별이 가능해야 함 swift에서의 함수는 다행히도 위의 조건을 모두 만족한다. 즉, 다음과 같은 코드들이 가능하다는 것이다. func function() { print("first class o..
[c/LeetCode] Median of Two Sorted Arrays 1. 첫 번째 아이디어 일단 아무 생각 없이 배열 동적할당 해서 무지성으로 값을 넣은 다음에 정렬해서 중앙값을 구하자고 생각했음. 근데 돌아가긴 하는데, 애초에 정렬을 버블 정렬을 썼더니 (m+n)^2이 나와서 시간이 85ms / 6.9MB 라는 엄청나게 쓰레기 같은 성능의 코드를 작성해버렸음... 무지성 코딩 멈춰 double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){ int resultSize = nums1Size + nums2Size; int *resultList = malloc(sizeof(int) * resultSize); int index = 0; for(int i = 0;i < nums1Size;..
[c && swift/LeetCode] Reverse Integer 1. c version 4ms/ 5.5MB 왜 이렇게 오래 걸린거지 int reverse(int x){ long temp = 0; long value = x; if (x 2147483647 || temp < -2147483648) return 0; return temp; } 2. swift version swift는 long type이 그냥 Int이기 때문에 c보다 오버플로우 언더플로우에 유연하긴 함 c에서의 자료형 swift 에서의 자료형 signed..
[c/LeetCode] Add Two Numbers 1. 문제 (난이도 : medium) 2. 첫 번째 접근 아이디어 링크드 리스트를 돌면서 숫자로 가져와서 더하면 빠르게 될 것이라고 예상했음 그래서 while (temp != NULL) { val1 = val1 * 10 + temp->val; temp = temp->next; } 이렇게 돌면서 가져온 숫자를 거꾸로 만들어야 하니까 while (val1) { tmp1 = tmp1 * 10 + (val1 % 10); val1 = val1 / 10; } 이렇게 변수를 하나 더 설정해서 숫자로 만드는 작업을 했음 당연히 타입은 unsigned long long으로 나름 오버플로우를 생각하긴 했음 그 뒤에 숫자를 더하고 while문을 돌면서 malloc해준거에 %10으로 나머지 숫자부터 찾아서 거꾸로 넣는 작업을..
[c/LeetCode] Two Sum 난 아직.. returnSize의 역할을 이해 못했다. 어짜피 문제에서 exactly one solution 이라고 강조까지 해놨으니, size는 당연히 2인데 굳이 저걸 포인터로 받아오는 이유는 뭐지? int* twoSum(int* nums, int numsSize, int target, int* returnSize){ int *result =(int *)malloc(sizeof(int) * 2); for(int i=0;i
[오류일기] NSException: this class is not key value coding-compliant for the key ___ ios ui kit을 다루던 중 빌드 오류를 발견했다. 빌드가 되다가 his class is not key value coding-compliant for the key 메세지를 띄우며 종료되는데 처음에는 코드의 문제인줄 알아서 코드를 계속 살펴보다가 도저히 답이 안나와서 찾아봤다. 결국 참조의 문제인 것이다.. 이 오류는 "내가 연결해둔 key ___ 를 찾을 수 없다"는 뜻인데, 따라서 왜 찾을 수 없는지 connection inspector를 살펴보면 된다 또는 객체를 오른쪽 클릭해서 inspector를 보면 됨 하..원인이 너무 어이없다. 처음에 outlet 변수 이름을 Img로 했다가 겹치는게 있어서 ImageView로 바꿨는데 참조는 여전히 Img로 하고 있으니 당연히 못찾는 거였다... 코드..
42seoul 6기 1차 한달간의 La Piscine 후기 (+본과정 합격) 42seoul 6기 1차로 1/3~1/28까지 약 한달동안 La Piscine 과정을 진행했다. 정확하게 어제 끝났다.사실 라피신 전까지는 뭐 할만하겠지 했는데 그냥 나의 오산이었고요?총평을 해보자면 "하루 12시간의 코딩 폐관수련" 이다. 진심으로 일정이 많이 타이트하다. 월~목: 개인 과제 및 평가금: 정기 시험토~일: 팀 프로젝트마지막 주 특별 팀 프로젝트: bsq이렇게 매주 반복하게 되는데 진짜 힘들다... 하루에 12시간씩 코딩하고 꿈에서도 코딩하는 꿈도 꿨음주말? 없습니다. 휴일? 없습니다. 물론 내가 자체적으로 쉬면 그건 휴일이 됨. 아무도 강요 안함. 하지만 과연 그럴 수 있을까? ㅎㅎ팀 프로젝트와 bsq는 난이도가 상당하다. 과제 난이도는 C와 리눅스 시스템 프로그래밍 위주라서 그렇게 어..
memory management strategies memory management strategies : 운영체제에서 제한된 메모리의 효율적인 사용과 참조방식을 구사하기 위한 전략 운영체제의 주요 기능 중 하나인 memory management는 3가지 목적이 있다. memory management goals 1. convenient abstraction for programming : 프로그래밍 시 쉽게 메모리를 사용 2. maximize perfomance with minimal overhead : 제한적인 memory 용량을 효율적으로 관리할 수 있도록 resource를 분배하고 오버헤드를 줄여서 성능을 최대화 3. provide isolation between process : process들 간의 독립적인 메모리 사용 보장 운영체제는 이러한 m..