전체 글

단순 연결 리스트(Singly Linked List)

단순 연결 리스트란? 연결리스트는 데이터를 저장하는 자료구조 중 하나이다. 연결리스트 종류도 여러개 있지만, 지금 살펴보려는 것은 단순 연결 리스트이다. 연결리스트는 여러 개의 노드(Node)로 이루어져 있다. 단순 연결 리스트는 2개의 필드를 가지고 있는데, 데이터 필드와 다음 노드 주소를 가지고 있는 링크 필드(포인터)로 구성되어 있다. create, search, insert, remove 등을 효율적으로 구현하기 위해 사용한다고 한다. 구현 코드 전체적인 구현 코드는 다음과 같다. class LinkedList { constructor() { let init = new Node("init"); this.head = init; this.tail = init; this.currentNode = und..

팀 프로젝트를 위한 매뉴얼(3) - 협업 필수 기능 Pull Requests

Intro앞선 글들에서는 프로젝트 시작 전, 정해야할 규칙, 프로젝트 세팅하는 방법에 대해 설명했다. 팀 프로젝트를 위한 매뉴얼(1) - 규칙 정하기Intro 최근부터 팀 프로젝트를 할 일이 점점 생기고 있다. 그런데 만났던 사람들 중 대부분이 프로젝트를 처음하거나 체계적으로 한 경험이 없었다. 곧 나와 프로젝트를 함께 할 팀원들을 위해,sanghee01.tistory.com 팀 프로젝트를 위한 매뉴얼(2) - 프로젝트 세팅하기Intro 이전 글에서는 프로젝트 시작 전, 정해야할 규칙들에 대해 설명했다. 규칙 정하는 것은 체계적인 프로젝트 진행에 있어서 중요하므로 읽지 않은 분이 있거나 잘 모른다면 꼭 읽길 바란다.sanghee01.tistory.com 세팅을 완료했으니 이제 개발을 시작하면 된다! 하지..

Git 2023.06.04

팀 프로젝트를 위한 매뉴얼(2) - 프로젝트 세팅하기

Intro이전 글에서는 프로젝트 시작 전, 정해야할 규칙들에 대해 설명했다.규칙 정하는 것은 체계적인 프로젝트 진행에 있어서 중요하므로 읽지 않은 분이 있거나 잘 모른다면 꼭 읽길 바란다.해당 글 시리즈는 프로젝트를 처음 해보거나, 체계적으로 해본 경험이 없는 누구나 당장 협업에 참여할 수 있도록 선별해서 작성하였다. 참고해서 본인의 프로젝트에 맞게 수정 및 보완하면 좋을 것 같다. 팀 프로젝트를 위한 매뉴얼(1) - 규칙 정하기Intro 최근부터 팀 프로젝트를 할 일이 점점 생기고 있다. 그런데 만났던 사람들 중 대부분이 프로젝트를 처음하거나 체계적으로 한 경험이 없었다. 곧 나와 프로젝트를 함께 할 팀원들을 위해,sanghee01.tistory.com 이번 글에서는 프로젝트 세팅하는 방법에 대해서 다..

Git 2023.05.21

팀 프로젝트를 위한 매뉴얼(1) - 규칙 정하기

Intro최근부터 팀 프로젝트를 할 일이 점점 생기고 있다. 그런데 만났던 사람들 중 대부분이 프로젝트를 처음하거나 체계적으로 한 경험이 없었다.곧 나와 프로젝트를 함께 할 팀원들을 위해, 혹은 팀 프로젝트를 처음 하는 사람들에게 도움이 되고자 나의 협업 방법을 풀어나가고자 한다. 비록 나도 아직 완벽하다고 할 순 없지만, 이 글을 참고해서 본인의 프로젝트에 맞게 수정 및 보완하면 좋을 것 같다. 대상해당 글은 프로젝트를 처음 해보거나, 체계적으로 해본 경험이 없는 누구나 당장 협업에 참여할 수 있도록 작성하였다! 참고로 초심자 대상으로 작성한거라 작은 프로젝트 기준으로, 필요 없어도 될 것 같은 것은 생략했다. 다 알려고 하면 너무 복잡하고.. 막막해서 시작도 못할 수 있기 때문이다! (일단 시작하는게..

Git 2023.04.23

네트워크 기초 지식

학교 전공 공부와 더불어 이전부터 네트워크 공부의 필요성을 느껴서 널널한 개발자님의 네트워크 강좌를 듣고 정리하고자 한다. 해당 강좌는 사전 지식으로 운영체제 지식을 알고 있어야하는데, 운영체제도 이제야 막 전공으로 배우기 시작해서 그냥 맨 땅에 해딩하면서 알아가보고자 한다. 완전히 이해가 되지 않아도 일단은 다 기록할거라 글이 좀 더러울 수 있다.. 이 나중에 한번 싹 공부하고 복습할 때 글을 다듬을까 한다. 들어가기 전... 다음 용어들은 다 같은 의미이다. 네트워크 = Internet = IP 프로토콜 = 인터넷 프로토콜 기반으로 작동하는 네트워크 이 중에서 가장 유명한게 4계층 프로토콜인 TCP/IP다. 해당 강좌는 TCP/IP를 이해하는 것을 목표로 두고 있다. 이해가 안돼도 일단 외워서 끝내도..

CS/Network 2023.04.06

JSCODE 입문 클래스 회고

활동 내용 활동 기간: 23/02/09 ~ 23/03/06 주 2회 총 8회차 진행 1~4회차 - 제시한 React 키워드를 클래스 전에 학습해오고 관련 미션을 수행 5~8회차 - 팀 프로젝트 진행 활동 자료 팀 프로젝트 Github 저장소 미션 정리 글 미션 Github 저장소 팀 프로젝트에서의 역할, 기여한 부분, 성과 팀장을 맡았고, 이전에 팀 프로젝트 경험이 있어서 활발한 소통이 이루어지고 협업을 진행하는데 많은 도움을 준 것 같다. 소통을 중요시하게 생각해서 톡방에 자주 진행 상황을 여쭤 보았고, 구현한게 있으면 PR을 올려달라고 했다. 이렇게 계속 팀원들 간 코드를 업데이트를 했고, 그 덕에 프로젝트 진행하면서 충돌과 같은 문제가 발생한 일이 별로 없었던 것 같다. 그리고 막히는 점, 궁금한 ..

회고 & 생각 2023.03.07

Mermaid - 코드로 순서도(flowchart) 그리기

나는 지금까지 순서도를 그릴 일이 있으면 아이패드에 손으로 그렸다. 하지만 그려할 순서도가 많아지면 점점 지쳤고, 글씨를 쓰는 것도 힘들었다. 시중에 나와있는 UI 툴을 이용해보기도 했는데, 도형을 일일이 가져와 위치를 맞추는 과정에서 불편함을 느껴서 사용하지 않았다. 그러다 최근에 글또 슬랙에서 ‘flowchart 툴로 무엇을 쓰는지’에 대한 고민 글이 올라왔었다. 몇몇 분들께서 mermaid 툴을 언급하셔서 이에 대해 찾아봤는데, 코드로 순서도를 작성하는 것이 정말 간편해 보였다. 혹시나 나와 같은 문제를 겪어본 경험이 있는 분들도 알면 좋을 것 같아 Mermaid 공식 문서를 참고하여 공부할 겸 정리해보고자 한다. Mermaid 란? Mermaid는 Markdown 문서에서 다이어그램을 생성하기 위..

이분 검색

리스트의 중간 값을 찾아 원하는 값과 비교해서 진행하는 알고리즘이다. 이 알고리즘을 이용하려면 먼저 정렬이 되어있어야한다. 중간값 = (최솟값 + 최댓값) / 2 중간값 위치에 해당하는 값과 검색하고자 하는 값과 비교한다. 만약 찾고자 하는 값이 중간 값보다 크다면 중간 값 이하는 검색하지 않고, 작다면 중간 값 이상은 검색하지 않는다. 이렇게 원하는 값 찾을 때까지 검색 범위를 반씩 쪼개며 찾는다. 이분 검색의 시간 복잡도는O(logN)이다. 아래는 예시 문제 및 풀이코드다. [인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 10. 이분검색 문제 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이..