일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 항해99 #1주차 #미니프로젝트 #WIL
- 크래프톤
- 탑다운
- github #깃허브 #깃허브설정 #깃허브업로드
- 알고리즘
- 1:1관계
- 포인터선언
- 분할정복
- 메모이제이션
- 크래프톤정글2기
- 이진탐색
- 다이나믹프로그래밍
- NULL포인터
- github #github세팅 #깃허브 #깃허브잔디
- Redux
- Mac #M1 #node #노드버전 #노드다운그레이드
- 보텀업
- 동적메모리할당
- calloc
- 크래프톤정글
- Recoil
- 재귀함수
- realloc
- recursive
- 지역성
- 데이터처리
- 상태관리
- 포인터접근
- MySQL
- insertion
- Today
- Total
목록분류 전체보기 (43)
우당탕탕 개발일지

DNS, DNS서버(p.50) Domain Name System 사람에게는 숫자 나열보다 이름이 기억하기 더 쉽다. 하지만 the Internet 은 IP (숫자)로 통신한다. 그렇다면 이름과 IP 주소를 매칭해서 기억하고 있으면 어떨까? 그리고 필요할 때 주어진 이름에서 IP 를 찾아서 알려주는 것이지. DNS: 그것을 위한 서비스 DNS 서버: 서버 이름과 IP 매칭을 기억하는 저장소 누군가 서버 이름가지고 IP 를 물어보면 대답해주는 역할 * 도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환 웹사이트의 데이터가 저장되어 있는 호스팅 서버는 인터넷 회선이 연결된 컴퓨터/장치인지라 IP ..

캐시(Cache)란? 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 뜻한다. 아래 저장공간 계층 구조에서 확인할 수 있듯, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 캐시(Cache)는 아래와 같은 경우에 사용을 고려하면 좋다. 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터) 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등) 지역성(Locality) 모든 데이터를 캐시에 담기에는 저장 공간이 그리 크지않기 때문에 힘들다. 그래서 보통 캐시는 지역성을 나누어 분류한다. 시간적 지역성 특정 데이터가 한번 접근되었을 경우 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것을 말한다. 즉, 한 번 가져왔던 데이터..

동적 메모리 할당? 기존에는 배열을 정할 때 크기가 언제나 컴파일 시간에 확정되어 있다. 보통 이 경우 배열을 '충분히 크게' 잡게 되는데 이렇게 되면 메모리가 낭비되는 일이 허다하다. - 가변적으로 변할 수 있도록 동적으로 메모리를 할당해서 배열에 맞는 메모리의 특정한 공간이 배열을 나타내는 것 처럼 메모리의 특정한 부분을 사용할 수 있게 된다. - 동적으로 메모리를 할당할 때 Heap(힙)영역에 할당한다. (스택이나, 데이터영역, Read Only Data 부분은 당연하게 malloc함수가 건드릴 수 없음 -> 이 부분의 크기는 반드시 컴파일 때 100%로 정해져야하기 때문임) 메모리 할당 함수 - malloc 메모리 할당 및 초기화 - calloc 메모리 추가 할당 - realloc 메모리 해제 함..
함수 안에서 함수 자기자신을 호출하는 방식 보통 알고리즘에 따라서 반복문으로 구현한 코드보다 재귀호출로 구현한 코드가 좀 더 직관적이고 이해하기 쉬운 경우가 많음 파이썬 최대 재귀깊이 1000 재귀호출과 스택 넘침 현상 - 함수가 자기자신을 계속 호출하다가 최대 깊이(1000)를 초과하면 RecursiveError가 발생 재귀호출에 종료 조건 만들기 def hello(count): if count == 0: return print('Hello, world!', count) count -=1 hello(count) hello(5) 피보나치 수열 - 재귀는 거꾸로 생각해야 한다(ex. fib(6)을 구하려면 fib(5) + fib(4)가 필요하다), 역산 1 1 2 3 5 8 13 21 ... f(n) = ..

포인터? 모든 변수는 메모리에 위치한다. 이때, 메모리의 위치를 메모리주소(address)라고 한다. 이러한 메모리 주소를 담을 수 있는 변수를 포인터라고 함 i = 3; int* j = &i; // 65524 -> *는 포인터, &는 주소를 의미한다. 포인터 선언 int a = 1; float b = 2.0f; int* x; // int형 변수의 주소를 담을수 있는 변수(포인터) x = &a; // &는 해당위치의 주소를 가져오는 연산자임 float* y; // float형 변수의 주소를 담을수 있는 변수(포인터) y = &b; struct person { ... } c; struct person* w = &c; // struct person형 변수의 주소를 담는 변수(포인터) void* z; // 모..
O(1) - push, pop an stack - access hash table O(log n) - Binary Search, Tree Access, Search, Insertion, Deletion O(n) - traverse tree - traverse linked list O(nlog n) - Quick, Merge, Heap sort O(n^2) - Insertion -Bubble -Selection 최상 : 오메가 표기법 (Big-Ω Notation) 평균 : 세타 표기법 (Big-θ Notation) 최악 : 빅오 표기법 (Big-O Notation) 빅오표기법의 성능(수행시간, 연산횟수) O(1) < O(log n) < O(n) < O(n * log n) < O(n²) < O(n³) < O..

이진탐색(Binary Search) 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 시작점, 끝점, 중간점을 이용해 탐색범위를 정한다 이진탐색 알고리즘은 배열의 데이터가 정렬(오름차순, 내림차순)되어 있을 때 선형검색보다 빠르게 검색할 수 있다 이미 정렬된 10개의 데이터 중에서 값이 4인 원소를 찾는 예시 [Step 1] 시작점: 0 끝점: 9 중간점:4(소수점 이하 제거) 중간점에 2개가 있는 경우 소수점을 제거해서 중간점을 선정 찾고자 하는 위치(4)보다 중간점(8)이 크다면 중간점을 포함한 오른쪽의 것들은 확인할 필요 없음 [Step 1] 시작점:0, 끝점:3, 중간점:1 찾고자 하는 위치(4)가 중간점(1)보다 커서 시작점부터 중간점까지는 확인할 필요 없음 [Step..
시간복잡도 O(N^2) 삽입 정렬, 버블 정렬, 선택 정렬 삽입 정렬은 각 숫자를 적절한 위치에 삽입하는 방법으로 문제를 해결 다른 정렬은 무조건 위치를 바꾸는 방식이라면 삽입 정렬은 필요할 때만 위치를 바꿈 -> 버블정렬과 선택정렬보다 더 빠름 -> 시간복잡도 O(N^2)알고리즘 3가지 중에 가장 강력한 알고리즘 1 10 5 8 7 6 4 3 2 9 삽입 정렬 과정 1 10 5 8 7 6 4 3 2 9 - 1은 이미 맨 앞에 있기 때문에 넘어감 - 10은 1 앞과 뒤 중에 뒤로 _ 1 _ 10 5 8 7 6 4 3 2 9 => 1 10 5 8 7 6 4 3 2 9 - 5는 1과 10사이 _ 1 _ 10 _ 5 8 7 6 4 3 2 9 => 1 5 10 8 7 6 4 3 2 9 - _ 1 _ 5 _ 10..

26살의 나는 앞으로 어떤 일을 하고싶을까, 초중고 시절에 어른들로 부터 끊임없이 받았던 장래희망에 대한 질문들이 대학교를 들어간 후에는 다들 약속이라도 한듯이 끊어졌고 당연하게 전공분야의 일을 하게 되겠다고 생각했다. 수능 성적에 끼워 맞추듯 들어가게 된 전공학과는 당연하게도 하고싶은 일이 아니었고 대학시절 내내 어른들이 수없이 묻던 장래희망에 대한 질문들을 스스로에게 질문하며 방황아닌 방황의 시기를 보냈던 것 같다. 그렇게 졸업을 할 때 쯤 앞으로 어떤 일을 할까에 대해 더 막막했고 그나마 성격상 가만히 시간을 보내는 건 불안했기에 같은과 언니의 추천으로 코딩에 뛰어들게 되었다. 처음 코딩을 하고싶다고 느꼈던건 전공분야에서 아두이노 코딩을 할때였는데, 내가 짠 코드에 따른 결과가 바로 나타나는 것에 ..
인생에서 가장 잊을 수 없는 ‘성장’의 순간, 크래프톤 정글이 함께합니다. 아침 일찍부터 부산에서 시흥으로 이동했고, 간단한 서명과 방배정을 마치고 입소식이 시작되었다. 이후 코치님과 원장님, 그리고 장병규 의장님께서 강연을 해주셨는데 정글을 헤쳐나가는데에 있어 갖추어야 할 태도를 알려주시는 느낌이었다. 김현수코치님 정글에서 중요한 것 3가지 '동료, 칼, 나침반' 백승현코치님 -> '실무에서 쓰이는게 맞나요?, 리액트나 노드같은거 안배우냐,,' 등의 질문에 대하여, AI시대에서도 살아남을 수 있는 힘, 기반을 기르는 과정 특정 프레임워크 지식만 가진 것보다 오래 살아남을 수 있다 김정한원장님 어제보다 오늘, 오늘보다 내일 성장하는 개발자 전산학 핵심 압축적으로 학습할 수 있다 중요한 동료! 유일한 경쟁..