2021-01-12-TIL TIL 알고리즘과 자료구조 수업 알고리즘은 사용하는 일이 거의 없다. 하지만 자료구조는 매우 빈번하게 사용된다. 알고리즘의 정의 알고리즘의 조건 : 입력, 출력, 유한성 The Art of Computer Programming 유한성(Finiteness) 명확성(Definiteness) 입력(Input) 출력(Output) Knu... 2021/01/12 2021-TIL
Java에서 배열과 리스트를 어떻게 구분해야 하는가 Notes Java에서 여러 값을 담는 가장 기본적인 선택지는 배열과 리스트다. 둘 다 순서를 가진 데이터를 담는다는 점은 같지만, 사용 방식과 제약은 꽤 다르다. 배열의 특징 배열은 같은 타입의 값을 고정된 크기로 담는 구조다. int[] numbers = new int[10]; 배열의 핵심 특징: 크기가 고정된다 인덱스로 접근한다 ... 2021/01/12 Java
배열과 연결 리스트는 언제 차이가 커지는가 Notes 배열과 연결 리스트는 모두 선형 자료구조지만, 성능 특성과 사용 시나리오는 꽤 다르다. 차이는 결국 어디에 강하고 어디에서 비용이 드는가에 있다. 두 구조가 메모리에 놓이는 방식 배열은 원소를 한 덩어리의 연속된 공간에 차례로 둔다. 원소 크기가 같으므로 i번째 원소의 위치는 “시작 주소 + i × 원소 크기”로 바로 계산된다. 연결 리스트는... 2021/01/12 Java
LinkedList로 Deque를 구현할 때 알아야 할 것 Notes Deque는 양쪽 끝에서 삽입과 삭제가 가능한 자료구조다. 이름 그대로 double-ended queue이며, 스택과 큐의 성질을 모두 표현할 수 있다. Deque가 필요한 이유 한쪽 끝만 쓰는 큐나 스택으로는 표현이 애매한 경우가 있다. 앞뒤에서 모두 원소를 넣고 빼야 할 때 슬라이딩 윈도우처럼 양 끝 갱신이 필요한 경우 BFS... 2021/01/12 Java
LinkedList로 Queue를 구현할 때 핵심은 무엇인가 Notes Queue는 먼저 들어온 데이터가 먼저 나가는 FIFO(First-In, First-Out) 구조다. 프린터 작업 대기열, 메시지 처리, BFS 탐색처럼 순서 보장이 필요한 상황에서 자주 쓰인다. Queue의 핵심 연산 enqueue: 뒤에 넣기 dequeue: 앞에서 빼기 peek: 앞 원소 확인 이 세 가지가 자연스럽게 빠르... 2021/01/12 Java
단일, 이중, 환형 연결 리스트는 어떻게 다른가 Notes 연결 리스트는 노드가 다음 노드를 참조하는 방식으로 이어지는 자료구조다. 구현 방식에 따라 단일 연결 리스트, 이중 연결 리스트, 환형 연결 리스트로 나뉜다. 배열은 원소를 메모리에 연속으로 놓고 인덱스로 위치를 계산한다. 연결 리스트는 원소를 각자 흩어진 노드에 담고, 각 노드가 다음 노드의 참조를 들고 있다. 그래서 i번째 원소를 찾으려면 앞에서... 2021/01/12 Java
빅 오(Big-O)와 시간복잡도를 어떻게 봐야 하는가 Notes 알고리즘이나 자료구조를 공부할 때 가장 먼저 만나게 되는 개념이 시간복잡도다. 하지만 실무에서는 빅 오 표기법을 공식을 외우듯 쓰기보다, 입력 크기가 커질 때 어떤 비용이 병목이 되는지를 판단하는 도구로 이해하는 편이 더 중요하다. 시간복잡도와 공간복잡도 시간복잡도: 입력 크기가 증가할 때 실행 시간이 어떻게 늘어나는가 공간복잡도: 입... 2021/01/12 Programming
2021-01-11-TIL TIL 2021-01-11-TIL Json, Bson 제이슨, 비산 Java에서 Random 문자열 생성 https://needneo.tistory.com/23 Java Linked List https://freestrokes.tistory.com/84 자료구조와 알고리즘 빅오 표기법 링크드 리스트 ... 2021/01/11
2021-01-10-TIL TIL 2021-01-10-TIL 나만의 GitHub 프로필 꾸미기 butter-shower.tistory.com/142 GitHub Profile README Generator - arturssmirnovs sujinlee.me/professional-github rahuldkjain/github-profile-readme-generat... 2021/01/10 2021-TIL
2021-01-08-TIL TIL 2021-01-08-TIL 리눅스의 역사 타넨바움 교수가 미닉스를 개발해서 배포했는데, 리누스 토르발즈가 변경 요청을 했지만 받아들이지 않아서 포기하고 혼자서 만들게 되었다. 조금 더 찾아보면, 교육용 OS였던 MINIX는 수정과 재배포에 라이선스 제약이 있었고 16비트 설계라 당시 보급되던 32비트 386 PC에 잘 맞지 않았다. 토르발즈는 1... 2021/01/08 2021-TIL