전체 글

하쿠나마타타
· Algorithm
1. Tree(트리) 트리는 노드(node)들과 이들을 연결하는 간선(edge)들로 구성된 계층적 자료구조이다. 각 노드는 부모-자식 관계를 가지며, 사이클이 없는 연결구조를 형성한다. 트리는 데이터를 계층적으로 표현하기에 적합하며, 검색과 정렬에 효율적인 구조를 제공한다. 우리가 사용하는 폴더 구조도 트리라고 할 수 있다.   2. 트리와 그래프의 차이점트리에 대해 이해하기 위해서는 그래프와 트리의 차이점을 알아보면서 이해하면 보다 쉽다. 트리는 사실 그래프의 한 종류이다. 특별한 제약조건들을 가진 그래프라고 생각하면 된다. 하지만 설명의 용이성을 생각하여 트리와 그래프는 따로 구분지어서 말하도록 하겠다. 그래프에 대한 설명은 아래 글을 참고하길 바란다. [알고리즘] Graph 자료구조 개념 (JS)1..
· Algorithm
1. Graph(그래프)그래프는 노드(또는 정점)와 이들을 연결하는 간선으로 구성된 자료구조이다. 그래프는 네트워크 구조를 표현하는데 매우 유용하다. 또한 최소 신장 트리(MST), 깊이우선탐색(DFS), 너비 우선탐색(BFS)과 같은 알고리즘에서 기본적으로 사용하는 자료구조 중 하나이다. 그래프는 G = (V, E)는 노드(정점)과 간선으로 이루어져 있다.V: 정점(Vertex) 집합E: 간선(Edge) 집합그래프는 방향 그래프, 무방향 그래프, 가중치 그래프로 크게 3가지 유형이 존재한다. 간선(Edge)에 방향의 존재 유무를 통해 방향그래프와 무방향 그래프로 나눌 수 있으며, 간선에 가중치가 있으면 가중치 그래프로 분류한다.방향 그래프에 가중치가 있는 경우 방향 가중치 그래프이고, 무방향에도 마찬가..
1. Map(맵)맵은 키(key)와 값(value)의 쌍으로 데이터를 저장하는 추상 자료구조이다. 맵의 특징으로는 '각 키는 맵 내에서 유일하게 존재.' , '각 키는 정확히 하나의 값과 연관' 와 같이 키의 유일성이다. 하나의 맵 안에서 동일한 키를 가진 두 개의 항목은 존재할 수 없다. 만약 이미 존재하는 키로 새로운 값을 저장하면, 기존 값은 새로운 값으로 덮어쓰기 된다. 이러한 특성 때문에 맵은 고유 식별자를 기반으로 정보를 구성해야 하는 상황에 이상적이다.맵의 기본 연산으로는 키-값 쌍의 삽입, 키를 이용한 값 검색, 키-값 쌍의 삭제, 특정 키의 존재 여부 확인 등이 있다.맵 자료구조는 이러한 연산들을 효율적으로 수행할 수 있도록 설계되어 있다. 구현 방식에 따라 성능 특성이 달라지지만, 일반..
· Algorithm
1. Heap(힙)힙은 완전이진트리 구조를 기반으로 하는 자료구조로, 특정한 순서 속성을 만족한다. 주로 최댓값이나 최솟값을 빠르게 찾아야 하는 경우에 사용된다.힙에는 최대힙(MaxHeap)과 최소힙(MinHeap) 2가지 방식이 존재한다.최댓값 최솟값을 찾는 자료구조로써 우선순위가 높은 데이터를 빠르게 찾아야 하는 경우에 효율적인 자료구조이다.힙 자료구조는 우선순위 큐 구현, 다익스트라 알고리즘 등에 응용하여 사용되기도 한다.  2. Heap 작동 방식힙의 주요 연산은 push(삽입 연산), pop(최댓값/ 최솟값 추출), peek(최댓값/ 최솟값 확인), build Heap(힙 생성) 총 4개로 구분지을 수 있다.javascript로 기본적인 클래스를 생성하면 다음과 같다.class MinHeap {..
· Error
문제상황  Notion을 쓰던, vsCode를 쓰던 한글로 작성하면 마지막 글자가 2 글자씩 작성되는 경우가 흔히 발생한다.처음에는 그냥 한글자씩 지우면서 사용하는데, 계속되면 화가 굉장히 많이 난다.  설정하는데 금방이니 빠르게 해결하는 것이 속편 할 것이다.결론부터 말하자면 Microsoft IME설정이 활성화되어있지 않아서 그런데, 아래와 같이 속성을 변경해 주면 된다.  설정 -> 시스템 -> 시간 및 언어 -> 언어 및 지역 -> 한국어 언어옵션-> Microsoft 입력기 -> 키보드 옵션 -> 이전 버전의 Microsoft IME 활성화    해결방법 window버튼을 눌러서 시스템을 검색하여 설정-> 시스템으로 들어가줍니다.   시간 및 언어 -> 언어 및 지역 선택 한국어를 오른쪽에 점3..
· Retrospect
1. 2024 공개SW 개발자 대회공개SW 개발자 대회는 2024년 18회를 맞이하는 국내 최대 규모 공개SW 관련 공모전이라고 볼 수 있다.과학기술정보통신부에서 주최했으며 정보통신산업진흥원이 주관한다.프로젝트 기획, 개발, 구현, 협업 등의 개발 경험과 기능테스트, 라이선스 검증을 통해 공개 SW의 전반적인 개발 과정을 경험할 수 있는 OpenSource관련 가장 큰 규모의 공모전이다.    2024 공개 SW개발자 대회는 자유과제, 지정과제, 지속발전과제 등 3가지 선택할 수 있는 주제 유형이 존재하며 각 주제에서 수상인원을 분배해서 뽑기에 주제 선택부터 중요하게 선택하여야 한다. 대회 일정은 예선인 1차평가, 2차 평가 전 멘토링과 출품작 검증, 라이선스 검증을 거치고 본선인 2차 평가를 통해 수상..
· Retrospect
1. +AI 메이커톤 경진대회 충청북도에서 후원하는 +AI메이커톤 경진대회가 열려 참여하게 되었다.+AI메이커톤 경진대회는 'ChatGPT를 이용한 산업응용서비스 및 제품개발'의 주제로 열리게 되었다. ChatGPT를 활용하여 충청북도 지자체의 문제를 해결할 수 있는 아이디어가 필요한 과정에 기존에 개발하던 'Co-Labor: 외국인 근로자 고용 서포트 플랫폼' 프로젝트를 이어서 추가 구현하여 참가하게 되었다.   온라인 예선을 통하여 본선에서는 5팀~6팀 정도 참여하게 되었다. +AI 메이커톤 경진대회는 당일에 AI를 해커톤방식으로 구현하기에 당일에 기존 프로젝트에서 ChatGPT를 사용하는 부분이 존재하였기에, 이 부분을 파인튜닝으로 더 정확한 정답을 이끌어 내는 방식으로 진행되었다. 발표 중 이번에..
· Retrospect
1. 새싹 해커톤 새싹 해커톤은 1년에 한 번 서울에서 열리는 해커톤으로 2024년에는 서울경제진흥원이 주관하여 열렸다. 일반적인 해커톤과 같이 당일날 주제가 발표되고 바로 만드는 방식은 아니고, 2주간 개발한 것을 가지고 예선을 치른 후 본선에서 2일 동안 추가적으로 구현 및 발표준비를 하며 진행하는 방식이다.  예선에서는 총 50팀이 선발되어 본선에 진출하며, 본선 중 8팀은 수상을 받게 된다.수상금액은 총 1500만원으로 상금이 꽤 큰 공모전이라 할 수 있다. 2. 예선부터 본선까지의 여정  새싹 해커톤의 일정은 아래와 같이 진행되었다.팀모집기간, 예선, 본선순으로 진행됐다. 팀 모집 기간에는 3인에서 5인정도 팀원들이 한 팀에 신청을 하고, 예선에서는 기획 및 개발을 하고 주제와 깃허브 링크를 게..
· Retrospect
1. 프로젝트 소개 1-1. Co-Labor : 외국인 근로자 서포트 플랫폼외국인 근로자들이 한국에서 안정적으로 정착하고 적응할 수 있도록 돕는 플랫폼일자리, 정보 부족, 법률 등 외국인 근로자들이 겪을 수 있는 다양한 문제 해결에 도움을 줌프로젝트 인원 : 4명 ( 백엔드 3명, 프론트 1명)개발기간: 2024.07.01 ~ 2024.07.22 / 2024.07.30 ~ 2024.08.02 / 2024.10.03 ~ 2024.10.18  이 프로젝트는 사회적 약자 지원에 대한 주제에서 외국인 근로자도 사회적 약자에 포함되지 않을까? 에서 시작된 프로젝트이다. 우리나라는 아시아 최초로 다민족 국가로 지정될 정도로 외국인이 많이 거주하고 있다. 사회는 점차 저출산을 향해가며, 이에 따라 일손은 부족해지고 ..
1. 라이브러리 관리React를 사용한 프로젝트를 하는 과정에서 기획이 정확하지 않고, react의 숙련도가 많이 높지 않을 때였다. 하나의 기능을 구현하는 과정에서 npm으로 많은 라이브러리들을 설치하고 개발을 하게 되었다.예를 들어 캘린더 기능을 구현해야 할 때 react-calender를 제외한 무수히 많은 캘린더가 존재하며, 라이브러리마다 내부 css 수정과 기능에 대한 내용이 달라 여러 개를 시도해보기도 한다. 이러한 과정들이 있는 이후 마주친 내 package.json은 처참했다. 내가 사용하고 있는 라이브러리가 무엇인지, 사용하지 않는 라이브러리는 무엇인지 확인하기 너무 어려운 것이 아닌가. 한번에 편하게 사용하지 않는 라이브러리들을 찾을 수는 없을까?   2. npxnpx를 통해 쉽게 사용..