본문 바로가기

Web Development

(78)
[자료구조] 스택 (Stack) 무엇인가일반 명사 : 무더기, 많음, 쌓다. 채우다. 쌓아올린 더미고유 명사 : 후입 선출 구조(Last In First Out)로 마지막 삽입된 자료부터 출력 혹은 삭제되는 형태의 자료구조왜 사용하는가?스택의 후입선출(LIFO) 특성이 필요한 곳에 사용한다.- 함수의 호출 관리 : 프로그래밍에서 함수를 호출할 때, 각 함수의 반환 주소와 지역 변수를 저장하는데 스택을 사용한다.이는 프로그램이 어떤 함수를 언제 끝내고 다음 작업으로 넘어가야 하는지를 정확히 관리할 수 있게 해준다.- 역순 문자열 생성 : 문자열을 역순으로 만들 때 스택을 사용할 수 있다. 문자열의 문자를 하나씩 스택에 넣은 다음, 하나씩 꺼내면 원래 문자열의 역순을 얻을 수 있다.- 괄호 검사 : 수학적 수식이나 프로그래밍 ..
[자료구조] 연결리스트 (Linked List) 무엇인가일반 명사 : 연결된 목록?고유 명사 : 메모리 공간에서 떨어져 저장되어 있는 데이터들를 포인터로 연결해서 리스트 형태로 구현한 자료구조왜 사용하는가?배열의 단점(크기 예측의 어려움, 삭제/삽입의 비효율성)을 해결하기 위해서 사용되는 자료구조이다.- 연결 리스트 만들 때는 필요한 데이터만큼 노드를 생성하고, 생성된 노드를 연결하는 방식으로 만들기 때문에 데이터의 전체 크기를 고려하지 않아도 된다.- 데이터의 수정, 삽입 시에는 노드를 만들거나 삭제한 후, 관련된 노드가 가리키는 포인터만 변경하기 때문에 배열에 비해 간단하다.배열과 연결리스트의 비교- 데이터의 크기가 변하지 않고, 참조가 자주 일어난다면 배열을 사용.- 데이터의 크기가 자주 변하고, 수정, 삭제가 많이 일어날 경우 연..
[자료구조] 배열 (Array) 무엇인가일반 명사 : 일정한 차례나 간격에 따라 벌여 놓음 / 동일한 성격의 데이터를 관리하기 쉽도록 하나로 묶는 일고유 명사 : 동일한 특성을 가지며, 일정한 규칙에 따라여러 요소가 나열되어 있는 데이터들의 집합왜 사용하는가?여러 값들을 각각 하나의 변수에 할당해서 사용하는 것은 코드의 가독성과 관리가 어렵다.배열을 사용한다면, 동일한 데이터 타입의 여러 값을 하나의 변수로 관리할 수 있어 코드의 가독성과 관리가 편리해진다.어떻게 사용하는가?인덱스와 값의 쌍으로 이루어진 연속적인 메모리의 집합이다.배열은 값에 접근할 때, O(1)의 시간 복잡도를 갖는다.(배열이 인덱스를 참조하여 값에 접근할 때는, 배열의 첫 번째 원소를 기준으로 요청된 인덱스만큼 원소를 건너 뛰어서 그 값에 접근한..
[Algorithm] 퀵정렬 1. 무엇인가? 리스트에서 피벗(하나의 요소)을 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽에 정렬한다. 정렬된 두 부분에서 다시 피벗을 설정하고, 작은 값은 왼쪽, 큰 값은 오른쪽에 정렬한다. 위 과정을 더 이상 리스트를 분할할 수 없을 때까지 진행한다. 2. 어떻게 사용하는가? 1. 리스트 내부에서 기준이 될 피벗(요소)을 선택한다. 2. 피벗을 기준으로 피벗보다 작은 요소들은 피벗의 왼쪽으로 옮기고, 피벗보다 큰 요소들은 피벗의 오른쪽로 옮긴다. 3. 피벗을 제외한, 왼쪽의 부분 리스트, 오른쪽의 부분 리스트를 같은 방식으로 다시 정렬한다. 분할된 부분 리스트에 대하여 재귀 호출을 이용하여 정렬을 반복한다. 4. 부분 리스트들이 더 이상 분할이 불가능할 때까지 반복한다. 퀵정렬의 경우 평균적으로 nl..
[Algorithm] 무거운 알약 찾기 알약이 담긴 악병 10개가 있다. 이 중 9개의 병에 들어있는 알약의 각 무게는 1.0g인데, 1개의 병에는 1.1g짜리 잘못 만들어진 알약이 있다. 눈금 저울 하나가 주어졌을 때, 단 한번만 저울을 써서, 무거운 알약을 찾는 방법은 무엇일까? 1 대 1로 각 알약을 비교하면 무거운 알약을 쉽게 찾을 수 있겠지만, 저울을 한 번만 쓸 수 있다는 전제가 있으므로, 해당 방법은 쓸 수 없다. 먼저 약병에 숫자를 쓴다. 1번, 2번, 3번, 4번, 5번, 6번, 7번, 8번, 9번, 10번 그리고 각 약병에 적힌 숫자만큼의 알약을 꺼낸다. 그 알약을 모두 더한 후 저울에 올린다. 만약 1번이 무거운 알약이었다면, 1.1 * 1 + 1 * 2 + 1* 3 + 1* 4 + 1 * 5 + 1* 6 + 1* 7 + ..
[ETC] 정규식 (Regex) 이해하기 회사 코드에서 정규식 코드를 볼 때마다, 공부 한번 해야지 하고 계속 넘어가고 있었다. 이번에야말로 정규식에 대해서 공부해보자라는 생각으로 정리해보았다. 드림 코딩 엘리의 정규식 영상을 보고, 그 안의 내용을 다 따라해보니, 정규식에 대해서 기본은 이해가 된 것 같다. https://www.youtube.com/watch?v=t3M6toIflyQ 내가 다니는 회사에서 정규식은 아래와 같은 경우 사용한다. 프론트엔드에서 라우트 경로에 따라 화면을 다르게 표현 해줘야 할 경우, 라우트 경로를 파악할 경우 프론트엔드 및 서버에서 사용자 입력 내용을 validate 할 경우 정규식은 개발자 개인이 공부하지 않았다면 모르기에 모두가 코드를 쉽게 읽고 유지보수하기에 어렵다는 단점이 있지만, 일단 알기만하면, 길게 ..
[ETC] github 아이디 여러개 사용하기 1. Git config 파일의 위치- global 파일 : ~/.gitconfig- local 파일 : [사용중인 프로젝트 폴더 경로]/.git/config2. git config 파일 조작 방법git config [local or global] [category].[parameter] [value]git config --global user.name "Name"git config --global user.email you@example.com3. 특정 프로젝트(폴더)에서 기본 github 계정과는 다른 깃 허브 계정 사용하기git config --local user.name "a-user-only-for-this-repository"git config --local user.email "and-an-..
[JAVASCRIPT] each() 와 map()의 차이 map() 메서드배열의 각 요소를 주어진 함수로 처리하여 그 결과를 모아 새로운 배열을 반환합니다. 반복을 종료할 수 있는 방법이 없습니다.forEach() 메서드배열의 각 요소에 대해 주어진 함수를 실행합니다. 반복을 중간에 종료할 수 있습니다(break나 return을 사용할 수 없습니다).실제 사용 예시원본 코드 (JavaScript로 변환)document.getElementById('search_result_box').classList.remove('d-none');document.getElementById('search_result_box').classList.add('d-block');const inputText = document.getElementById('search_additional_..