{"componentChunkName":"component---src-pages-tags-tsx","path":"/tags/","result":{"data":{"allMdx":{"group":[{"fieldValue":"2018 KAKAO BLIND RECRUITMENT","totalCount":4},{"fieldValue":"2019 KAKAO BLIND RECRUITMENT","totalCount":2},{"fieldValue":"2019 카카오 개발자 겨울 인턴십","totalCount":1},{"fieldValue":"2021 Dev-Matching: 웹 백엔드 개발자(상반기)","totalCount":1},{"fieldValue":"2021 KAKAO BLIND RECRUITMENT","totalCount":3},{"fieldValue":"2021 카카오 채용연계형 인턴십","totalCount":1},{"fieldValue":"2022 KAKAO BLIND RECRUITMENT","totalCount":3},{"fieldValue":"2022 KAKAO TECH INTERNSHIP","totalCount":2},{"fieldValue":"2023 KAKAO BLIND RECRUITMENT","totalCount":3},{"fieldValue":"2023 KAKAO TECH INTERNSHIP","totalCount":1},{"fieldValue":"2024 KAKAO WINTER INTERNSHIP","totalCount":1},{"fieldValue":"Ajax","totalCount":1},{"fieldValue":"ForkTsCheckerWebpackPlugin","totalCount":1},{"fieldValue":"Greedy","totalCount":2},{"fieldValue":"IIFE","totalCount":1},{"fieldValue":"JSON","totalCount":1},{"fieldValue":"RestAPI","totalCount":1},{"fieldValue":"SEO","totalCount":3},{"fieldValue":"ShallowCopy","totalCount":1},{"fieldValue":"Summer/Winter Coding(~2018)","totalCount":3},{"fieldValue":"Toc","totalCount":1},{"fieldValue":"TsconfigPathsPlugin","totalCount":1},{"fieldValue":"async","totalCount":1},{"fieldValue":"await","totalCount":1},{"fieldValue":"babel","totalCount":7},{"fieldValue":"bfs","totalCount":7},{"fieldValue":"cleanup","totalCount":1},{"fieldValue":"code splitting","totalCount":1},{"fieldValue":"const","totalCount":1},{"fieldValue":"const어서션","totalCount":2},{"fieldValue":"createSelector","totalCount":1},{"fieldValue":"darkmode","totalCount":1},{"fieldValue":"dfs","totalCount":3},{"fieldValue":"dynamic import","totalCount":1},{"fieldValue":"eslint","totalCount":1},{"fieldValue":"fiber","totalCount":1},{"fieldValue":"gold4","totalCount":1},{"fieldValue":"gold5","totalCount":2},{"fieldValue":"hooks","totalCount":1},{"fieldValue":"katex","totalCount":1},{"fieldValue":"lazy","totalCount":1},{"fieldValue":"let","totalCount":1},{"fieldValue":"lv1","totalCount":43},{"fieldValue":"lv2","totalCount":29},{"fieldValue":"lv3","totalCount":9},{"fieldValue":"never","totalCount":1},{"fieldValue":"null병합연산자","totalCount":1},{"fieldValue":"object","totalCount":1},{"fieldValue":"polyfill","totalCount":3},{"fieldValue":"prettier","totalCount":1},{"fieldValue":"reactHelmet","totalCount":1},{"fieldValue":"readonly","totalCount":1},{"fieldValue":"reconciliation","totalCount":1},{"fieldValue":"redux","totalCount":1},{"fieldValue":"rest parameters","totalCount":1},{"fieldValue":"routing","totalCount":2},{"fieldValue":"shallowEqual","totalCount":2},{"fieldValue":"silver1","totalCount":3},{"fieldValue":"silver2","totalCount":8},{"fieldValue":"silver3","totalCount":2},{"fieldValue":"spread","totalCount":1},{"fieldValue":"suspense","totalCount":1},{"fieldValue":"this","totalCount":1},{"fieldValue":"tsc","totalCount":1},{"fieldValue":"unknown","totalCount":1},{"fieldValue":"useEffect","totalCount":2},{"fieldValue":"useSelector","totalCount":1},{"fieldValue":"var","totalCount":2},{"fieldValue":"virtualDOM","totalCount":1},{"fieldValue":"void","totalCount":1},{"fieldValue":"webpack","totalCount":6},{"fieldValue":"webpackDevServer","totalCount":1},{"fieldValue":"zustand","totalCount":1},{"fieldValue":"객체타입","totalCount":1},{"fieldValue":"교차타입","totalCount":1},{"fieldValue":"구현","totalCount":8},{"fieldValue":"그래프","totalCount":8},{"fieldValue":"그리디","totalCount":3},{"fieldValue":"기하학","totalCount":1},{"fieldValue":"누적합","totalCount":1},{"fieldValue":"다익스트라","totalCount":2},{"fieldValue":"단축평가","totalCount":1},{"fieldValue":"데이터타입","totalCount":2},{"fieldValue":"렉시컬스코프","totalCount":1},{"fieldValue":"렉시컬환경","totalCount":1},{"fieldValue":"리터럴타입","totalCount":1},{"fieldValue":"메서드","totalCount":1},{"fieldValue":"문자열","totalCount":1},{"fieldValue":"배열순환","totalCount":2},{"fieldValue":"배열타입","totalCount":1},{"fieldValue":"백준","totalCount":16},{"fieldValue":"백트래킹","totalCount":1},{"fieldValue":"병합 정렬","totalCount":1},{"fieldValue":"블로그","totalCount":5},{"fieldValue":"비동기","totalCount":5},{"fieldValue":"삽입정렬","totalCount":1},{"fieldValue":"선택정렬","totalCount":1},{"fieldValue":"성능 최적화","totalCount":1},{"fieldValue":"스코프","totalCount":4},{"fieldValue":"스택","totalCount":3},{"fieldValue":"슬라이딩 윈도우","totalCount":1},{"fieldValue":"시뮬레이션","totalCount":1},{"fieldValue":"실행컨텍스트","totalCount":1},{"fieldValue":"옵셔널체이닝","totalCount":1},{"fieldValue":"완전탐색","totalCount":1},{"fieldValue":"우선순위큐","totalCount":1},{"fieldValue":"원시타입","totalCount":1},{"fieldValue":"월간 코드 챌린지 시즌1","totalCount":2},{"fieldValue":"월간 코드 챌린지 시즌2","totalCount":1},{"fieldValue":"유니언타입","totalCount":1},{"fieldValue":"의존성배열","totalCount":3},{"fieldValue":"이벤트루프","totalCount":1},{"fieldValue":"이진탐색","totalCount":1},{"fieldValue":"이진탐색트리","totalCount":1},{"fieldValue":"이진트리","totalCount":1},{"fieldValue":"이터러블","totalCount":1},{"fieldValue":"이터레이터","totalCount":1},{"fieldValue":"인덱스시그니처","totalCount":1},{"fieldValue":"자료구조","totalCount":6},{"fieldValue":"정렬","totalCount":10},{"fieldValue":"제너레이터","totalCount":2},{"fieldValue":"최단경로","totalCount":1},{"fieldValue":"콜백함수","totalCount":2},{"fieldValue":"콜스택","totalCount":1},{"fieldValue":"퀵정렬","totalCount":1},{"fieldValue":"큐","totalCount":4},{"fieldValue":"클로저","totalCount":1},{"fieldValue":"타입변환","totalCount":1},{"fieldValue":"타입어서션","totalCount":1},{"fieldValue":"탐욕법","totalCount":2},{"fieldValue":"태스크큐","totalCount":1},{"fieldValue":"투포인터","totalCount":1},{"fieldValue":"튜플","totalCount":1},{"fieldValue":"트리","totalCount":3},{"fieldValue":"판별된유니언","totalCount":1},{"fieldValue":"프로그래머스","totalCount":81},{"fieldValue":"프로미스","totalCount":1},{"fieldValue":"함수선언문","totalCount":1},{"fieldValue":"함수표현식","totalCount":1},{"fieldValue":"함수호이스팅","totalCount":1},{"fieldValue":"해시","totalCount":3},{"fieldValue":"호이스팅","totalCount":2},{"fieldValue":"화살표함수","totalCount":2},{"fieldValue":"힙","totalCount":1}],"nodes":[{"id":"b08fef65-f4ef-5071-9ba6-b1102f1a236c","excerpt":"zustand 리렌더링 문제점 zustand로 상태를 관리할 때 흔히 마주치는 문제가 있다. 위 코드처럼 BearStore를 생성하여 컴포넌트에서 사용할 경우, 특정 상태만 사용하더라도 스토어 내 다른 상태가 변경되면 불필요한 리렌더링이 발생한다. 예를 들어, 컴포넌트에서 useBearStore를 통해  bears  상태만 사용하고 있더라도, increa…","fields":{"slug":"/zustand-optimization/"},"frontmatter":{"title":"zustand 불필요한 리렌더링 최적화","category":"react","date":"2025년 1월 14일","tags":["zustand","shallowEqual","성능 최적화"]}},{"id":"f40a341d-72e9-539b-a74c-2731a85469d0","excerpt":"들어가며 지금까지 Redux toolkit을 사용하면서  useSelector 를 잘못 사용하고 있다는 것을 알게되었다. 다음과 같이 구조 분해 할당으로  useSelector 를 사용하고 있었다. 구조 분해 할당으로  useSelector 를 사용하면 어떤 문제가 생기는지, 그리고 어떻게 최적화할 수 있을지 이번 포스팅에서 다뤄보려고 한다. useSel…","fields":{"slug":"/useselector-optimization/"},"frontmatter":{"title":"Redux의 useSelector 최적화 하기","category":"react","date":"2024년 9월 14일","tags":["redux","useSelector","createSelector","shallowEqual"]}},{"id":"5613b3b9-cd5a-5aef-be21-db791f13930a","excerpt":"문제 연습문제 - 석유 시추 문제 설명 세로길이가  n  가로길이가  m 인 격자 모양의 땅 속에서 석유가 발견되었습니다. 석유는 여러 덩어리로 나누어 묻혀있습니다. 당신이 시추관을 수직으로 단 하나만 뚫을 수 있을 때, 가장 많은 석유를 뽑을 수 있는 시추관의 위치를 찾으려고 합니다. 시추관은 열 하나를 관통하는 형태여야 하며, 열과 열 사이에 시추관을…","fields":{"slug":"/pg2-250136/"},"frontmatter":{"title":"[프로그래머스] 석유 시추 (JavaScript)","category":"ps","date":"2024년 9월 8일","tags":["프로그래머스","lv2","bfs"]}},{"id":"79a793fc-d24e-50e5-8cf8-35b644cb7f67","excerpt":"문제 연습문제 - 할인 행사 문제 설명 XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을…","fields":{"slug":"/pg2-131127/"},"frontmatter":{"title":"[프로그래머스] 할인 행사 (JavaScript)","category":"ps","date":"2024년 9월 5일","tags":["프로그래머스","lv2","슬라이딩 윈도우"]}},{"id":"a93ace85-5b11-5df0-a302-0e2c956d956a","excerpt":"문제 15787번: 기차가 어둠을 헤치고 은하수를 문제 설명 N 개의 기차가 어둠을 헤치고 은하수를 건너려고 한다. 기차는 20개의 일렬로 된 좌석이 있고, 한 개의 좌석에는 한 명의 사람이 탈 수 있다. 기차의 번호를 1번부터  N 번으로 매길 때, 어떠한 기차에 대하여  M 개의 명령이 주어진다. 명령의 종류는 4가지로 다음과 같다. 1 i x :  …","fields":{"slug":"/boj-15787/"},"frontmatter":{"title":"[BOJ] 15787번: 기차가 어둠을 헤치고 은하수를 (JavaScript)","category":"ps","date":"2024년 8월 9일","tags":["백준","silver2","구현"]}},{"id":"c763bd30-a840-5447-bd2e-2e373086b87e","excerpt":"문제 10799번: 쇠막대기 문제 설명 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완…","fields":{"slug":"/boj-10799/"},"frontmatter":{"title":"[BOJ] 10799번: 쇠막대기 (JavaScript)","category":"ps","date":"2024년 8월 9일","tags":["백준","silver2","스택"]}},{"id":"a3def16c-e26b-5d68-99b9-66eaa229abea","excerpt":"문제 16931번: 겉넓이 구하기 문제 설명 크기가  인 종이가 있고, 종이는   크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에   크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어졌을 때, 이 도형의 겉넓이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 종이의 크기  N ,  M 이 주어진다. 둘째 줄…","fields":{"slug":"/boj-16931/"},"frontmatter":{"title":"[BOJ] 16931번: 겉넓이 구하기(JavaScript)","category":"ps","date":"2024년 8월 2일","tags":["백준","silver2","구현","기하학"]}},{"id":"a4df5ea4-866b-58af-90b5-682530346235","excerpt":"문제 2607번: 비슷한 단어 문제 설명 영문 알파벳 대문자로 이루어진 두 단어가 다음의 두 가지 조건을 만족하면 같은 구성을 갖는다고 말한다. 두 개의 단어가 같은 종류의 문자로 이루어져 있다. 같은 문자는 같은 개수 만큼 있다. 예를 들어 \"DOG\"와 \"GOD\"은 둘 다 'D', 'G', 'O' 세 종류의 문자로 이루어져 있으며 양쪽 모두 'D', '…","fields":{"slug":"/boj-2607/"},"frontmatter":{"title":"[BOJ] 2607번: 비슷한 단어 (JavaScript)","category":"ps","date":"2024년 8월 2일","tags":["백준","silver2","구현","문자열"]}},{"id":"c42a7b43-7d3e-57a9-be9e-66a80ebaacd3","excerpt":"문제 14503번: 로봇 청소기 문제 설명 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 방은   크기의 직사각형으로 나타낼 수 있으며,   크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북 중 하나이…","fields":{"slug":"/boj-14503/"},"frontmatter":{"title":"[BOJ] 14503번: 로봇 청소기 (JavaScript)","category":"ps","date":"2024년 8월 1일","tags":["백준","gold5","구현","시뮬레이션","배열순환"]}},{"id":"a99657b5-fc60-54c2-a511-5109adeccf31","excerpt":"문제 2477번: 참외밭 문제 설명 시골에 있는 태양이의 삼촌 댁에는 커다란 참외밭이 있다. 문득 태양이는 이 밭에서 자라는 참외가 도대체 몇 개나 되는지 궁금해졌다. 어떻게 알아낼 수 있는지 골똘히 생각하다가 드디어 좋은 아이디어가 떠올랐다. 유레카! 1 의 넓이에 자라는 참외 개수를 헤아린 다음, 참외밭의 넓이를 구하면 비례식을 이용하여 참외의 총개수…","fields":{"slug":"/boj-2477/"},"frontmatter":{"title":"[BOJ] 2477번: 참외밭 (JavaScript)","category":"ps","date":"2024년 8월 1일","tags":["백준","silver2","구현","배열순환"]}},{"id":"7a74181d-f7e6-563b-a21b-cad970f99535","excerpt":"문제 1138번: 한 줄로 서기 문제 설명 N명의 사람들은 매일 아침 한 줄로 선다. 이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다. 어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다. 그리고 아침에 자기가 기록해 놓은 것과 사람들이 줄을 선 위치가 맞는지 확인한다. 사람들은 자기보다 큰 사람이 왼쪽에 몇 …","fields":{"slug":"/boj-1138/"},"frontmatter":{"title":"[BOJ] 1138번: 한 줄로 서기 (JavaScript)","category":"ps","date":"2024년 8월 1일","tags":["백준","silver2","정렬"]}},{"id":"608e893a-6c32-5d1e-9688-01a7fd244c97","excerpt":"문제 14502번: 연구소 문제 설명 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으…","fields":{"slug":"/boj-14502/"},"frontmatter":{"title":"[BOJ] 14502번: 연구소 (JavaScript)","category":"ps","date":"2024년 7월 26일","tags":["백준","gold4","구현","그래프","bfs","dfs","백트래킹"]}},{"id":"0963bff2-4cb5-58ae-8f78-e2fca53e538b","excerpt":"문제 2178번: 미로 탐색 문제 설명 크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 …","fields":{"slug":"/boj-2178/"},"frontmatter":{"title":"[BOJ] 2178번: 미로 탐색 (JavaScript)","category":"ps","date":"2024년 7월 26일","tags":["백준","silver1","그래프","bfs"]}},{"id":"88ad582e-c6b6-5b89-8922-8e24ed026343","excerpt":"이터레이션 프로토콜 ES6에서 도입된 이터레이션 프로토콜은 순회할 수 있는 데이터 구조를 만들기 위해 ECMAScript 사양에서 정의한 규칙이다. ES6 이전에는 배열, 문자열, 유사 배열 객체, DOM 컬렉션 등 다양한 데이터 구조가 서로 다른 방식으로 순회할 수 있었다. 그러나 ES6에서는 이터레이션 프로토콜을 준수하는 이터러블로 이러한 데이터 구조…","fields":{"slug":"/js-iterable/"},"frontmatter":{"title":"JavaScript: 이터러블(iterable)과 이터레이터(iterator)","category":"javascript","date":"2024년 7월 25일","tags":["이터러블","이터레이터","제너레이터"]}},{"id":"af9ddd43-b2eb-593b-937e-9ad8f0a411c0","excerpt":"문제 연습문제 - 혼자 놀기의 달인 문제 설명 혼자서도 잘 노는 범희는 어느 날 방구석에 있는 숫자 카드 더미를 보더니 혼자 할 수 있는 재미있는 게임을 생각해냈습니다. 숫자 카드 더미에는 카드가 총 100장 있으며, 각 카드에는 1부터 100까지 숫자가 하나씩 적혀있습니다. 2 이상 100 이하의 자연수를 하나 정해 그 수보다 작거나 같은 숫자 카드들을…","fields":{"slug":"/pg2-131130/"},"frontmatter":{"title":"[프로그래머스] 혼자 놀기의 달인 (JavaScript)","category":"ps","date":"2024년 7월 25일","tags":["프로그래머스","lv2","dfs","구현"]}},{"id":"95c3a182-8671-5b0c-bb93-00755c0f6422","excerpt":"문제 21608번: 상어 초등학교 문제 설명 상어 초등학교에는 교실이 하나 있고, 교실은   크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는  명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은  번부터  번까지 번호가 매겨져 있고, (r, c)는 r행 c열을 의미한다. 교실의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은…","fields":{"slug":"/boj-21608/"},"frontmatter":{"title":"[BOJ] 21608번: 상어 초등학교 (JavaScript)","category":"ps","date":"2024년 7월 24일","tags":["백준","gold5","bfs","구현"]}},{"id":"0152fa40-60c4-5816-843c-6e398d9a8e45","excerpt":"문제 1012번: 유기농 배추 문제 설명 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추…","fields":{"slug":"/boj-1012/"},"frontmatter":{"title":"[BOJ] 1012번: 유기농 배추 (JavaScript)","category":"ps","date":"2024년 7월 23일","tags":["백준","silver2","bfs"]}},{"id":"fe168eac-4ff5-5be7-b496-d3fe26a687e8","excerpt":"문제 1431번: 시리얼 번호 문제 설명 다솜이는 기타를 많이 가지고 있다. 그리고 각각의 기타는 모두 다른 시리얼 번호를 가지고 있다. 다솜이는 기타를 빨리 찾아서 빨리 사람들에게 연주해주기 위해서 기타를 시리얼 번호 순서대로 정렬하고자 한다. 모든 시리얼 번호는 알파벳 대문자 (A-Z)와 숫자 (0-9)로 이루어져 있다. 시리얼번호 A가 시리얼번호 B…","fields":{"slug":"/boj-1431/"},"frontmatter":{"title":"[BOJ] 1431번: 시리얼 번호 (JavaScript)","category":"ps","date":"2024년 7월 23일","tags":["백준","silver3","정렬"]}},{"id":"85035848-bb7b-5cb3-99cf-666b7c8d90f8","excerpt":"문제 11659: 구간 합 구하기 4 문제 설명 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수  N 과 합을 구해야 하는 횟수  M 이 주어진다. 둘째 줄에는  N 개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간  i …","fields":{"slug":"/boj-11659/"},"frontmatter":{"title":"[BOJ] 11659번: 구간 합 구하기 4 (JavaScript)","category":"ps","date":"2024년 7월 22일","tags":["백준","silver3","누적합"]}},{"id":"ebf83a42-3b6f-5230-885b-e7a21117a9c3","excerpt":"문제 17086번: 아기상어2 문제 설명 N×M 크기의 공간에 아기 상어 여러 마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 아기 상어가 최대 1마리 존재한다. 어떤 칸의 안전 거리는 그 칸과 가장 거리가 가까운 아기 상어와의 거리이다. 두 칸의 거리는 하나의 칸에서 다른 칸으로 가기 위해서 지나야 하는 칸의 수이고, 이동…","fields":{"slug":"/boj-17086/"},"frontmatter":{"title":"[BOJ] 17086번: 아기상어2 (JavaScript)","category":"ps","date":"2024년 7월 22일","tags":["백준","silver2","그래프","bfs"]}},{"id":"8bd496d9-f4fb-5381-8672-1b19f121a9ae","excerpt":"문제 1931번: 회의실 배정 문제 설명 한 개의 회의실이 있는데 이를 사용하고자 하는  N 개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의  I 에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 …","fields":{"slug":"/boj-1931/"},"frontmatter":{"title":"[BOJ] 1931번: 회의실 배정 (JavaScript)","category":"ps","date":"2024년 7월 19일","tags":["백준","silver1","그리디","정렬"]}},{"id":"2342818c-e045-5671-8554-8c5ad9044deb","excerpt":"문제 1946번: 신입 사원 문제 설명 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원으로 선발하고 싶어 한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 …","fields":{"slug":"/boj-1946/"},"frontmatter":{"title":"[BOJ] 1946번: 신입 사원 (JavaScript)","category":"ps","date":"2024년 7월 19일","tags":["백준","silver1","그리디","정렬"]}},{"id":"85e5cee5-dbae-536c-b778-2525661b811b","excerpt":"문제 연습문제 - 롤케이크 자르기 문제 설명 철수는 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 합니다. 이 롤케이크에는 여러가지 토핑들이 일렬로 올려져 있습니다. 철수와 동생은 롤케이크를 공평하게 나눠먹으려 하는데, 그들은 롤케이크의 크기보다 롤케이크 위에 올려진 토핑들의 종류에 더 관심이 많습니다. 그래서 잘린 조각들의 크기와 올려진…","fields":{"slug":"/pg2-132265/"},"frontmatter":{"title":"[프로그래머스] 롤케이크 자르기 (JavaScript)","category":"ps","date":"2024년 7월 17일","tags":["프로그래머스","lv2"]}},{"id":"ede076fb-1b87-5f9b-9506-751a38242317","excerpt":"문제 [PCCP 기출문제] 1번 - 붕대 감기 문제 설명 어떤 게임에는  붕대 감기 라는 기술이 있습니다. 붕대 감기 는  t 초 동안 붕대를 감으면서 1초마다  x 만큼의 체력을 회복합니다.  t 초 연속으로 붕대를 감는 데 성공한다면  y 만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가…","fields":{"slug":"/pg1-250137/"},"frontmatter":{"title":"[프로그래머스] PCCP 기출문제 1번 : 붕대 감기 (JavaScript)","category":"ps","date":"2024년 7월 16일","tags":["프로그래머스","lv1"]}},{"id":"eed21964-4e21-5d91-9148-ac79a1a5f391","excerpt":"문제 2024 KAKAO WINTER INTERNSHIP - 가장 많이 받은 선물 문제 설명 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. 두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지…","fields":{"slug":"/pg1-258712/"},"frontmatter":{"title":"[프로그래머스] 가장 많이 받은 선물 (JavaScript)","category":"ps","date":"2024년 7월 4일","tags":["프로그래머스","2024 KAKAO WINTER INTERNSHIP","lv1"]}},{"id":"a3c3c655-7c74-5db9-ab4d-66af6dc193a3","excerpt":"NextJs14 - Dynamic Routes  의 내용을 번역한 글입니다. 정확한 세그먼트 이름을 미리 알 수 없고 동적 데이터를 사용하여 라우트를 생성하려는 경우, 요청 시 또는 빌드 시 사전 렌더링된 동적 세그먼트를 사용할 수 있습니다. Convention 동적 세그먼트(Dynamic Segments)는 폴더 이름을 대괄호로 묶어 만들 수 있습니다:…","fields":{"slug":"/dynamic-routes/"},"frontmatter":{"title":"[NextJS14] Dynamic Routes","category":"nextjs","date":"2024년 7월 3일","tags":["routing"]}},{"id":"b2defb74-199c-56df-94b6-0cbd5da251f5","excerpt":"NextJs14 - Route Groups  의 내용을 번역한 글입니다. app  디렉토리에서 중첩된 폴더는 일반적으로 URL 경로에 매핑됩니다. 그러나 폴더가 경로의 URL 경로에 포함되지 않도록 폴더를 경로 그룹으로 표시할 수 있습니다. 이를 통해 URL 경로 구조에 영향을 주지 않고 경로 세그먼트와 프로젝트 파일을 논리 그룹으로 구성할 수 있습니다.…","fields":{"slug":"/route-groups/"},"frontmatter":{"title":"[NextJS14] Route Groups","category":"nextjs","date":"2024년 7월 3일","tags":["routing"]}},{"id":"5890aa6d-549b-55b8-9e97-70cde95a6e33","excerpt":"들어가며 라이브코딩에서 스택을 사용해서 큐를 구현하는 문제를 낸적이 있다는 걸 보았다. 스택을 사용해서 큐를 구현하는 방법을 알아보자. 아이디어 큐는  선입선출(FIFO: First-In First-Out)  구조를 가지는 자료구조다. 그리고 스택은  LIFO(Last-In First-Out)  구조를 가지는 자료구조다. 스택을 사용해서 큐를 구현하려면 …","fields":{"slug":"/implementing-a-queue-using-stacks-in-js/"},"frontmatter":{"title":"[자료구조] 스택(Stack)으로 큐(Queue) 구현하기","category":"cs","date":"2024년 5월 27일","tags":["자료구조","큐","스택"]}},{"id":"ccee6458-a12d-55b8-844e-26d31de4f30f","excerpt":"최근 웹 애플리케이션의 복잡도가 증가하면서, 개발자들은 더 큰 규모의 리액트 프로젝트를 다루게 되었다. 이에 따라 번들 크기도 함께 커지면서, 초기 로딩 시간이 길어지는 문제가 발생하고 있다. 사용자들은 빠른 로딩과 부드러운 사용자 경험을 기대하는데, 이러한 기대를 충족시키기 위해 우리는 어떻게 해야 할까? 바로 여기서  코드 스플리팅(Code Split…","fields":{"slug":"/react-code-splitting/"},"frontmatter":{"title":"React에 Code splitting 적용하기","category":"react","date":"2023년 12월 20일","tags":["dynamic import","lazy","suspense","code splitting"]}},{"id":"94b5ad25-2542-5109-8245-b5b210444ccf","excerpt":"들어가며 이 포스팅 에서 설정에 대한 자세한 설명이 없었는데, 이번 포스팅에서 babel과 tsc의 역할, 설정 파일에 대해 좀 더 자세히 살펴보자. tsc와 babel의 역할 TypeScript Compiler(tsc) 와  babel  둘 다 컴파일러의 역할을 하는데 어떤 것을 사용해야 할지 헷갈릴 수 있다. 이 둘의 역할을 간단하게 정리하면 다음과 …","fields":{"slug":"/babel-and-tsc/"},"frontmatter":{"title":"babel과 tsc","category":"typescript","date":"2023년 10월 21일","tags":["tsc","babel"]}},{"id":"90b1430f-9572-520e-8f95-a08e8cce9ac7","excerpt":"webpack 에 대한 설명  여기 에서 확인할 수 있다.\n Babel 과  polyfill 에 대한 설명은  여기 에서 확인할 수 있다. webpack에서 polyfill 설정에 대한 게시글은  여기 에서 확인할 수 있다. 들어가며 이 포스팅 에서 babel의 각 설정에 대해 자세히 다루지 않았다. 이번 포스팅에서 설정 파일에 대해 좀 더 자세히 살펴보…","fields":{"slug":"/webpack-babel-setting/"},"frontmatter":{"title":"Babel 적용하며 이해하기(with. React, TypeScript)","category":"web","date":"2023년 10월 16일","tags":["babel","webpack"]}},{"id":"6b7908f5-43b4-52d0-9382-0796089fbaa9","excerpt":"TypeScript 설치 및 설정 필요한 패키지를 설치하자. tsconfig-paths-webpack-plugin tsconfig.json  파일에 설정된 경로 별칭(path aliases)을 webpack에게 알려주고, 이러한 별칭을 해석하여 모듈을 로드할 때 실제 경로를 찾도록 도와주는 플러그인이다. 이 플러그인을 설치하지 않는다면 경로 별칭을 tsc…","fields":{"slug":"/webpack-react-setting-4/"},"frontmatter":{"title":"Webpack + React + TypeScript Boilerplate (4) - 타입스크립트, 리액트 설정하기","category":"react","date":"2023년 10월 12일","tags":["webpack","babel","ForkTsCheckerWebpackPlugin","TsconfigPathsPlugin"]}},{"id":"13b18373-42a7-556e-8d2b-7014e5118ea3","excerpt":"들어가며 이 포스팅에서는 간단하게 설정 방법만 작성했다. 자세한 설명은  이 포스팅 에서 다룬다. 패키지 설치 babel  7버전부터  ts-loader 를 사용하지 않고  @babel/preset-typescript 를 사용하여  ts 파일을 컴파일 할 수 있다. 자세한 내용은  TypeScript With Babel: A Beautiful Marria…","fields":{"slug":"/webpack-react-setting-3/"},"frontmatter":{"title":"Webpack + React + TypeScript Boilerplate (3) - babel, polyfill 설정하기","category":"react","date":"2023년 10월 12일","tags":["babel","polyfill"]}},{"id":"7d0dbfa9-c9a4-574c-a580-3af870da6b0c","excerpt":"이제 webpack을 설정해보자. webpack.common.js 먼저  webpack.common.js 를 생성할 것이다. 이 파일은 개발 환경과 배포 환경에서 공통적으로 사용되는 설정들을 담고 있다. 추가적인 설정에 관한 설명은 이 게시글이 너무 길어질 수 있기 때문에 자세하게 다루지 못하지만, 간단하게 주석으로 설명을 달아두었다. 개발 환경은  we…","fields":{"slug":"/webpack-react-setting-2/"},"frontmatter":{"title":"Webpack + React + TypeScript Boilerplate (2) - webpack 설정하기","category":"react","date":"2023년 10월 12일","tags":["webpack","webpackDevServer"]}},{"id":"c103c50a-d731-5be4-b379-0dd2289006a6","excerpt":"들어가기 전에 React 환경을 구축하기 위해  CRA (Create-React-App) 를 사용한다면 기본적으로 Webpack과 Babel과 같은 설정들이 세팅되어 있다. 모듈 번들러(Module Bundler)에 대해 공부하면서 CRA 없이 React 프로젝트를 설정하고 싶었다. 그래서 CRA 없이 React 프로젝트를 시작하는 방법을 정리해보았다. …","fields":{"slug":"/webpack-react-setting/"},"frontmatter":{"title":"Webpack + React + TypeScript Boilerplate (1) - 프로젝트 초기화 및 eslint, prettier 설정하기","category":"react","date":"2023년 10월 12일","tags":["webpack","eslint","prettier"]}},{"id":"0593a70f-2239-5444-944e-f42b396fa0a1","excerpt":"들어가며 이 포스팅 에 이어서 이번 포스팅에서는 webpack에서 polyfill을 설정하는 방법에 대해 알아보도록 하자. webpack 에 대한 설명  여기 에서 확인할 수 있고,    Babel 과  polyfill 에 대한 설명은  여기 에서 확인할 수 있다. Polyfill 설정 Babel v7.4.0부터 @babel/polyfill 패키지는 사용…","fields":{"slug":"/webpack-polyfill-setting/"},"frontmatter":{"title":"webpack에서 polyfill 설정하기","category":"web","date":"2023년 7월 9일","tags":["babel","polyfill","webpack"]}},{"id":"f1219380-783a-5413-bbaa-830b3042f28b","excerpt":"들어가며 우리가 React를 사용하다보면 상태로 객체를 관리하는 경우가 많이 있다. 특히 애플리케이션의 복잡성이 증가하면서 한 개의 상태로 여러 값을 관리해야 할 때, 객체를 사용하는 것은 꽤 효율적인 방법일 수 있다. 그러나 이러한 방식이  useEffect 와 같은 훅에 적용될 때, 약간의 주의가 필요하다. JavaScript의 객체 비교 useEff…","fields":{"slug":"/object-useEffect-dependencies/"},"frontmatter":{"title":"React: useEffect의 의존성 배열(dependency array)에서 객체 처리하기","category":"react","date":"2023년 6월 21일","tags":["의존성배열","useEffect","object"]}},{"id":"f9f17cb0-8671-560d-9a8e-9db4673f5417","excerpt":"들어가며 React를 사용하면서  useEffect 를 자연스럽게 활용해 왔다. 그러나, 'React는 useEffect를 어떻게 실행하는 걸까? 그리고 어떻게 변화를 감지하는거지?'라는 질문이 생겼다.  useEffect 의 사용법은 알고 있지만, 이 훅이 어떻게 작동하는지에 대해서는 이해하지 못했다. 그래서 이번 포스팅에서는  useEffect 의 실…","fields":{"slug":"/how-useeffect-is-executed/"},"frontmatter":{"title":"React: useEffect의 실행 과정 알아보기","category":"react","date":"2023년 6월 20일","tags":["hooks","useEffect","cleanup","fiber","의존성배열"]}},{"id":"4c0052b9-954f-5b28-a778-5f52bde295ca","excerpt":"들어가며 리액트 훅(Hooks)은 함수형 컴포넌트에서 상태와 생명 주기 기능을 사용할 수 있게 해주는 기능으로,  useEffect ,  useCallback  그리고  useMemo  등이 있다. 이 훅들은 모두 의존성 배열(dependency array)을 사용하여 특정 값이 변경될 때에만 특정 로직이 실행되도록 제어할 수 있다. 이번 포스트에서는 의…","fields":{"slug":"/what-is-dependency-array/"},"frontmatter":{"title":"React: 의존성 배열(Dependency Array)이란?","category":"react","date":"2023년 6월 17일","tags":["의존성배열","ShallowCopy"]}},{"id":"ac4809be-75dd-599a-87f9-ff3aab62a190","excerpt":"들어가며 이제는 당연하게 사용되는 다크 모드를 블로그에 적용하려고 한다. 솔직히 엄청 간단할 것이라고 생각했는데 블로그를 제작하면서 제일 많은 시간을 투자했다. 이번 포스팅에서 다크 모드를 적용하는 방법과 함께 내가 겪었던 문제점들을 공유하려고 한다. 먼저 기능 구현을 하고 회고를 하는 것이다 보니, 중간 과정 코드들은 예시정도로만 보고 넘어가자.😅 처음…","fields":{"slug":"/gatsby-blog-darkmode/"},"frontmatter":{"title":"Gatsby 블로그 다크 모드 적용하기","category":"gatsby","date":"2023년 6월 16일","tags":["블로그","darkmode"]}},{"id":"763d0e2e-a57b-59fe-be3f-a58534b86986","excerpt":"문제 연습문제 - 요격 시스템 문제 설명 A 나라가 B 나라를 침공하였습니다. B 나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A 나라는 B 나라의 아이기스 군사 기지에 융단폭격을 가했습니다.\nA 나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을 자랑하는 요격…","fields":{"slug":"/pg2-181188/"},"frontmatter":{"title":"[프로그래머스] 요격 시스템 (JavaScript)","category":"ps","date":"2023년 4월 20일","tags":["프로그래머스","lv2","그리디"]}},{"id":"93f9db9b-9d69-5e5c-be20-5572c545c342","excerpt":"Virtual DOM의 도입 배경 Virtual DOM을 이해하기 위해 브라우저 렌더링 과정에 대해 알면 좋을 것이다. 자세한 설명은  여기 에서 확인할 수 있다. Virtual DOM이 도입되기 이전에는, 웹 페이지에서 동적인 UI를 구현하기 위해서는 JavaScript를 이용하여 DOM을 직접 조작해야 했다. 예를 들어, 버튼을 클릭했을 때 특정 요소…","fields":{"slug":"/what-is-virtual-dom/"},"frontmatter":{"title":"React: Virtual DOM이란?","category":"react","date":"2023년 4월 10일","tags":["virtualDOM","reconciliation"]}},{"id":"31c91922-8096-5371-9266-5ec8b319226d","excerpt":"문제 연습문제 - 과제 진행하기 문제 설명 과제를 받은 루는 다음과 같은 순서대로 과제를 하려고 계획을 세웠습니다. 과제는 시작하기로 한 시각이 되면 시작합니다. 새로운 과제를 시작할 시각이 되었을 때, 기존에 진행 중이던 과제가 있다면 진행 중이던 과제를 멈추고 새로운 과제를 시작합니다. 진행중이던 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춰둔 …","fields":{"slug":"/pg2-176962/"},"frontmatter":{"title":"[프로그래머스] 과제 진행하기 (JavaScript)","category":"ps","date":"2023년 4월 7일","tags":["프로그래머스","lv2"]}},{"id":"ef1190aa-2238-5d97-bee8-cf23ab6e7159","excerpt":"문제 연습문제 - 추억 점수 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이  \"may\", \"kein\", \"kain\" 이고 각 인물의 그리움 점수가  5점, 10점, 1점 일 때 해당 사진의 …","fields":{"slug":"/pg1-176963/"},"frontmatter":{"title":"[프로그래머스] 추억 점수 (JavaScript)","category":"ps","date":"2023년 4월 6일","tags":["프로그래머스","lv1"]}},{"id":"349f2de9-c66e-5e62-88a0-1892877b7b5d","excerpt":"문제 연습문제 - 달리기 경주 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 \"mumu\", \"soe\", \"poe\" 선수들이 순서대로 달리고 있을 때, 해설진이 \"soe\"선수를 불렀다면 2등인 \"soe\" 선수가 1등인 \"mumu\" 선수를 추…","fields":{"slug":"/pg1-178871/"},"frontmatter":{"title":"[프로그래머스] 달리기 경주 (JavaScript)","category":"ps","date":"2023년 4월 6일","tags":["프로그래머스","lv1"]}},{"id":"08ddf5cb-0d9b-50eb-871d-91c1ad0a5e66","excerpt":"문제 연습문제 - 연속된 부분 수열의 합 문제 설명 비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다. 기존 수열에서 임의의 두 인덱스의 원소와 그 사이의 원소를 모두 포함하는 부분 수열이어야 합니다. 부분 수열의 합은  k 입니다. 합이  k 인 부분 수열이 여러 개인 경우 길이가 짧은 수열을 찾습니다. 길이가 …","fields":{"slug":"/pg2-178870/"},"frontmatter":{"title":"[프로그래머스] 연속된 부분 수열의 합 (JavaScript)","category":"ps","date":"2023년 4월 6일","tags":["프로그래머스","lv2"]}},{"id":"f8f6db68-d6ee-504d-92e5-93fdc8c2bf3f","excerpt":"우리가 웹 개발을 하다보면 한번쯤은  Babel 과  Polyfill 이라는 용어를 들어본 적이 있을 것이다. 필자도 들어본 것 같긴한데 정확히 무엇인지는 모르겠어서 정리해보려고 한다.😁 이번 포스팅에서는  Babel 과  Polyfill 의 정의와 각각의 역할에 대해 알아볼 것이다. Babel이란? 먼저 조금 더 익숙한  Babel 에 대해 알아보자. …","fields":{"slug":"/babel-and-polyfill/"},"frontmatter":{"title":"바벨(Babel)과 폴리필(Polyfill)","category":"web","date":"2023년 4월 4일","tags":["babel","polyfill"]}},{"id":"17820cdb-3ce1-5104-b28d-3c3d6103b47c","excerpt":"웹팩(Webpack) 이란? 웹팩(Webpack) 은 모듈 번들러(Module Bundler)로 웹 애플리케이션을 구성하는 자원(HTML, CSS, JavaScript, Images, 폰트 등)을 모두 모듈로 보고 이를 조합해 병합된 하나의 결과물을 만드는 도구다.  \nWebpack은 자바스크립트 애플리케이션을 위한 모듈 번들러이지만, CSS, HTML,…","fields":{"slug":"/what-is-webpack/"},"frontmatter":{"title":"웹팩(webpack) 이란?","category":"web","date":"2023년 3월 28일","tags":["webpack","babel"]}},{"id":"e9bb9abc-6186-5b17-b7bf-0d07a3f1e536","excerpt":"문제 연습문제 - 공원 산책 문제 설명 문제 설명\n지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. \"방향 거리\", \"방향 거리\" …  예를 들어 \"E 5\"는 로봇 강아지가 현재 위치에서 동쪽으…","fields":{"slug":"/pg1-172928/"},"frontmatter":{"title":"[프로그래머스] 공원 산책 (JavaScript)","category":"ps","date":"2023년 3월 24일","tags":["프로그래머스","lv1"]}},{"id":"e0ffd4cf-b476-5665-85a9-0cf4a3876dec","excerpt":"문제 연습문제 - 광물 캐기 문제 설명 마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을 캘 때는 피로도가 소모됩니다. 각 곡괭이로 광물을 캘 때의 피로도는 아래 표와 같습니다. \n예를 들어, 철 곡괭이는 다이아몬드를 캘 때 피로도 5가 소모되며, 철…","fields":{"slug":"/pg2-172927/"},"frontmatter":{"title":"[프로그래머스] 광물 캐기 (JavaScript)","category":"ps","date":"2023년 3월 24일","tags":["프로그래머스","lv2","탐욕법","Greedy","정렬"]}},{"id":"17456f3e-daf7-52f2-b1e5-55bd2766c9a3","excerpt":"문제 2022 KAKAO TECH INTERNSHIP - 두 큐 합 같게 만들기 문제 설명 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의…","fields":{"slug":"/pg2-118667/"},"frontmatter":{"title":"[프로그래머스] 두 큐 합 같게 만들기 (JavaScript)","category":"ps","date":"2023년 3월 22일","tags":["프로그래머스","2022 KAKAO TECH INTERNSHIP","lv2","투포인터"]}},{"id":"0f0f4ff9-233e-5b98-a9e0-e040448a9aec","excerpt":"다익스트라 알고리즘이란? 다익스트라 알고리즘은 하나의 시작 지점으로부터 모든 다른 지점까지의 최단 경로를 찾는 알고리즘이다. 다익스트라 알고리즘은 기본적으로  그리디 알고리즘 으로 분류된다. '매번 경로의 길이가 짧은 노드를 선택하는 과정'을 반복하기 때문이다. 다익스트라 알고리즘의 과정 시작 정점을 설정하고, 시작 정점의 거리 값을 0으로 설정한다. 시…","fields":{"slug":"/dijkstra-algorithm/"},"frontmatter":{"title":"[알고리즘] 다익스트라 알고리즘(Dijkstra Algorithm)","category":"algorithm","date":"2023년 3월 20일","tags":["그래프","최단경로","다익스트라"]}},{"id":"aabeea19-bf2a-597d-b247-854e2c7b746b","excerpt":"힙이란? 힙(heap) 은  완전 이진 트리의 일종 으로 특정한 규칙을 따라 부모 노드와 자식 노드 사이의 값이 정렬된다. 힙은 주로  우선순위 큐(Priority Queue) 를 구현할 때 사용된다. 힙은 완전히 정렬된 것은 아니지만 전혀 정렬 되지 않은 상태도 아닌  반정렬 상태(느슨한 정렬 상태)를 유지한다. 힙의 종류 힙(Heap)은  최대 힙(M…","fields":{"slug":"/heap-using-js/"},"frontmatter":{"title":"[자료구조] JavaScript로 힙(Heap) 구현하기","category":"cs","date":"2023년 3월 19일","tags":["자료구조","힙","우선순위큐"]}},{"id":"00af37e4-7392-5c09-a55d-f79ce0ee804c","excerpt":"문제 2022 KAKAO TECH INTERNSHIP - 등산코스 정하기 문제 설명 XX산은  n 개의 지점으로 이루어져 있습니다. 각 지점은 1부터  n 까지 번호가 붙어있으며, 출입구, 쉼터, 혹은 산봉우리입니다. 각 지점은 양방향 통행이 가능한 등산로로 연결되어 있으며, 서로 다른 지점을 이동할 때 이 등산로를 이용해야 합니다. 이때, 등산로별로 이…","fields":{"slug":"/pg3-118669/"},"frontmatter":{"title":"[프로그래머스] 등산코스 정하기 (JavaScript)","category":"ps","date":"2023년 3월 18일","tags":["프로그래머스","2022 KAKAO TECH INTERNSHIP","lv3","다익스트라"]}},{"id":"faec75dd-26c1-5708-8596-12f5fa2399f3","excerpt":"문제 연습문제 - 미로 탈출 문제 설명 1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 …","fields":{"slug":"/pg2-159993/"},"frontmatter":{"title":"[프로그래머스] 미로 탈출 (JavaScript)","category":"ps","date":"2023년 3월 17일","tags":["프로그래머스","lv2"]}},{"id":"f5af2fbe-f838-5073-8f9d-b184243ec6a4","excerpt":"문제 연습문제 - 리코쳇 로봇 문제 설명 리코쳇 로봇이라는 보드게임이 있습니다. 이 보드게임은 격자모양 게임판 위에서 말을 움직이는 게임으로, 시작 위치에서 목표 위치까지 최소 몇 번만에 도달할 수 있는지 말하는 게임입니다. 이 게임에서 말의 움직임은 상, 하, 좌, 우 4방향 중 하나를 선택해서 게임판 위의 장애물이나 맨 끝에 부딪힐 때까지 미끄러져 이…","fields":{"slug":"/pg2-169199/"},"frontmatter":{"title":"[프로그래머스] 리코쳇 로봇 (JavaScript)","category":"ps","date":"2023년 3월 17일","tags":["프로그래머스","lv2"]}},{"id":"34ca16c6-56f8-51fa-923e-37a049083196","excerpt":"문제 연습문제 - 택배상자 문제 설명 영재는 택배상자를 트럭에 싣는 일을 합니다. 영재가 실어야 하는 택배상자는 크기가 모두 같으며 1번 상자부터 n번 상자까지 번호가 증가하는 순서대로 컨테이너 벨트에 일렬로 놓여 영재에게 전달됩니다. 컨테이너 벨트는 한 방향으로만 진행이 가능해서 벨트에 놓인 순서대로(1번 상자부터) 상자를 내릴 수 있습니다. 하지만 컨…","fields":{"slug":"/pg2-131704/"},"frontmatter":{"title":"[프로그래머스] 택배상자 (JavaScript)","category":"ps","date":"2023년 3월 15일","tags":["프로그래머스","lv2"]}},{"id":"7093168e-ccbd-57d2-9d82-8fac5ae32642","excerpt":"문제 연습문제 - 덧칠하기 문제 설명 어느 학교에 페인트가 칠해진 길이가  n 미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. 넓은 벽 전체에 페인트…","fields":{"slug":"/pg2-161989/"},"frontmatter":{"title":"[프로그래머스] 덧칠하기 (JavaScript)","category":"ps","date":"2023년 3월 15일","tags":["프로그래머스","lv2"]}},{"id":"52b6fa0a-5119-5625-bc4a-cb3bfd1db797","excerpt":"top 타입 top타입 은 시스템에서 가능한 모든 값을 나타내는 타입이다. 모든 다른 타입은  top 타입에 할당할 수 있다. any 다시 보기 any  타입은 모든 타입의 위치에 제공될 수 있다는 점에서 top 타입처럼 작동할 수 있다. 다만 any는 타입스크립트가 해당 값에 대한 할당 가능성 또는 멤버에 대해 타입 검사를 수행하지 않도록 명시적으로 지…","fields":{"slug":"/ts-type-guard/"},"frontmatter":{"title":"TypeScript: 타입 제한자","category":"typescript","date":"2023년 3월 10일","tags":["unknown","타입어서션","const어서션"]}},{"id":"2a8556c8-eaf0-5545-87c3-897d49d88ba8","excerpt":"문제 연습문제 - 바탕화면 정리 문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있…","fields":{"slug":"/pg1-161990/"},"frontmatter":{"title":"[프로그래머스] 바탕화면 정리 (JavaScript)","category":"ps","date":"2023년 3월 7일","tags":["프로그래머스","lv1"]}},{"id":"5f0e59d7-dc8c-52a1-8b21-5ddf562fbba2","excerpt":"인터페이스는 객체의 형태를 정의하는 또 다른 방법이다. 인터페이스는 타입 별칭과 여러 면에서 유사하지만, 일반적으로 더 읽기 쉬운 오류 메시지, 더 빠른 컴파일러 성능, 클래스와의 더 나은 상호 운용성을 위해 선호된다. 타입 별칭 vs. 인터페이스 타입 별칭(type alias) 과  인터페이스(interface) 는 타입을 정의하고 재사용할 수 있도록 …","fields":{"slug":"/ts-interface/"},"frontmatter":{"title":"TypeScript: 인터페이스(Interface)","category":"typescript","date":"2023년 3월 7일","tags":["인덱스시그니처","readonly"]}},{"id":"a0241355-5f90-5391-83c1-f4e061d7546e","excerpt":"배열 타입스크립트는 배열의 타입 안정성을 보장하기 위해 초기 배열에 포함된 데이터 타입을 기억하고, 이후 해당 배열이 동일한 데이터 타입으로만 작업할 수 있도록 제한한다. 이를 통해  배열의 일관성과 타입 안전성을 유지시킨다. 위 예제에서  fruits  배열은 초기에 문자열 값들로 초기화되었다. 타입스크립트는 이를 기억하고 있어, 이후 문자열을 추가하는…","fields":{"slug":"/ts-array/"},"frontmatter":{"title":"TypeScript: 배열, 튜플","category":"typescript","date":"2023년 3월 6일","tags":["배열타입","튜플","const어서션"]}},{"id":"9d5f9032-4bef-5622-bc16-252091d1866a","excerpt":"문제 연습문제 - 귤 고르기 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가  1, 3, …","fields":{"slug":"/pg2-138476/"},"frontmatter":{"title":"[프로그래머스] 귤 고르기 (JavaScript)","category":"ps","date":"2023년 3월 2일","tags":["프로그래머스","lv2"]}},{"id":"c6030900-acb7-54be-bcd9-23e3c723d02f","excerpt":"문제 2023 KAKAO TECH INTERNSHIP - 표현 가능한 이진트리 문제 설명 당신은 이진트리를 수로 표현하는 것을 좋아합니다. 이진트리를 수로 표현하는 방법은 다음과 같습니다. 이진수를 저장할 빈 문자열을 생성합니다. 주어진 이진트리에 더미 노드를 추가하여 포화 이진트리로 만듭니다. 루트 노드는 그대로 유지합니다. 만들어진 포화 이진트리의 노…","fields":{"slug":"/pg3-150367/"},"frontmatter":{"title":"[프로그래머스] 표현 가능한 이진트리 (JavaScript)","category":"ps","date":"2023년 3월 2일","tags":["프로그래머스","2023 KAKAO TECH INTERNSHIP","lv3"]}},{"id":"bbf1c639-bfc5-56b3-bf4e-a6b29fc92f72","excerpt":"문제 연습문제 - 숫자 변환하기 문제 설명 자연수  x 를  y 로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다. x 에  n 을 더합니다\n x 에 2를 곱합니다.\n x 에 3을 곱합니다.\n자연수  x ,  y ,  n 이 매개변수로 주어질 때,  x 를  y 로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수…","fields":{"slug":"/pg2-154538/"},"frontmatter":{"title":"[프로그래머스] 숫자 변환하기 (JavaScript)","category":"ps","date":"2023년 2월 28일","tags":["프로그래머스","lv2"]}},{"id":"f53acf38-f498-5417-a860-2a6ef7922e38","excerpt":"문제 2019 KAKAO BLIND RECRUITMENT - 길 찾기 게임 문제 설명 전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다.\n내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카…","fields":{"slug":"/pg3-42892/"},"frontmatter":{"title":"[프로그래머스] 길 찾기 게임 (JavaScript)","category":"ps","date":"2023년 2월 28일","tags":["프로그래머스","2019 KAKAO BLIND RECRUITMENT","lv3"]}},{"id":"bdfb42f6-f441-5f1c-94d5-4dc86db5ca32","excerpt":"함수 매개변수 변수와 마찬가지로 타입 애너테이션으로 함수 매개변수의 타입을 선언할 수 있다. 필수 매개변수 자바스크립트에서는 인수의 수와 상관없이 함수를 호출할 수 있다. 하지만 타입스크립트는 함수에 선언된 모든 매개변수가 필수라고 가정한다. 함수에  필수 매개변수(required parameter) 를 제공하도록 강제하면 예상되는 모든 인숫값을 함수 내…","fields":{"slug":"/ts-function/"},"frontmatter":{"title":"TypeScript: 함수 타입","category":"typescript","date":"2023년 2월 28일","tags":["void","never"]}},{"id":"6a7022cf-ece7-5dfc-8007-cfcc5fcebc2b","excerpt":"문제 연습문제 - 인사고과 문제 설명 완호네 회사는 연말마다 1년 간의 인사고과에 따라 인센티브를 지급합니다. 각 사원마다 근무 태도 점수와 동료 평가 점수가 기록되어 있는데 만약 어떤 사원이 다른 임의의 사원보다 두 점수가 모두 낮은 경우가 한 번이라도 있다면 그 사원은 인센티브를 받지 못합니다. 그렇지 않은 사원들에 대해서는 두 점수의 합이 높은 순으…","fields":{"slug":"/pg3-152995/"},"frontmatter":{"title":"[프로그래머스] 인사고과 (JavaScript)","category":"ps","date":"2023년 2월 27일","tags":["프로그래머스","lv3"]}},{"id":"ab245e26-827c-5aa1-8b76-2aa6278e9abb","excerpt":"문제 연습문제 - 혼자서 하는 틱택토 문제 설명 틱택토는 두 사람이 하는 게임으로 처음에 3x3의 빈칸으로 이루어진 게임판에 선공이 \"O\", 후공이 \"X\"를 번갈아가면서 빈칸에 표시하는 게임입니다. 가로, 세로, 대각선으로 3개가 같은 표시가 만들어지면 같은 표시를 만든 사람이 승리하고 게임이 종료되며 9칸이 모두 차서 더 이상 표시를 할 수 없는 경우에…","fields":{"slug":"/pg2-160585/"},"frontmatter":{"title":"[프로그래머스] 혼자서 하는 틱택토 (JavaScript)","category":"ps","date":"2023년 2월 24일","tags":["프로그래머스","lv2"]}},{"id":"5ba43cd4-1402-5856-a0a6-4078f92ed6f1","excerpt":"객체 타입 {…}  구문을 사용해서 객체 리터럴을 생성하면, 타입스크립트는 해당 속성을 기반으로 새로운 객체 타입 또는 타입 형태를 고려한다. 객체 타입 선언 객체 타입은 객체 리터럴과 유사하게 보이지만 필드 값 대신 타입을 사용해 설명한다. 별칭 객체 타입 각 객체 타입에 타입 별칭을 할당해 사용하는 방법이 더 일반적이다. 구조적 타이핑 사용 검사 객체…","fields":{"slug":"/ts-object/"},"frontmatter":{"title":"TypeScript: 객체 타입","category":"typescript","date":"2023년 2월 24일","tags":["교차타입","판별된유니언"]}},{"id":"6cf6777c-f2f4-5365-bdda-341904228ec5","excerpt":"문제 연습문제 - 대충 만든 자판 문제 설명 휴대폰의 자판은 컴퓨터 키보드 자판과는 다르게 하나의 키에 여러 개의 문자가 할당될 수 있습니다. 키 하나에 여러 문자가 할당된 경우, 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀝니다. 예를 들어, 1번 키에 \"A\", \"B\", \"C\" 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 …","fields":{"slug":"/pg1-160586/"},"frontmatter":{"title":"[프로그래머스] 대충 만든 자판 (JavaScript)","category":"ps","date":"2023년 2월 23일","tags":["프로그래머스","lv1"]}},{"id":"5dfad7c0-2f37-5c0d-b8b9-50c8c023aeaa","excerpt":"타입스크립트가 값을 바탕으로 타입을 추론하는 두 가지 핵심 개념은 다음과 같다. 유니언(union) : 값에 허용된 타입을 두 개 이상의 가능한 타입으로 확장하는 것 내로잉(narrowing) : 값에 허용된 타입이 하나 이상의 가능한 타입이 되지 않도록 좁히는 것 유니언 타입 유니언 타입(Union Type) 이란 자바스크립트의 OR 연산자( || )와…","fields":{"slug":"/union-and-literal/"},"frontmatter":{"title":"TypeScript: 유니언과 리터럴","category":"typescript","date":"2023년 2월 22일","tags":["유니언타입","리터럴타입"]}},{"id":"66cd0e14-d350-5b65-a2f6-4f366c88c634","excerpt":"문제 연습문제 - 시소 짝꿍 문제 설명 어느 공원 놀이터에는 시소가 하나 설치되어 있습니다. 이 시소는 중심으로부터 2(m), 3(m), 4(m) 거리의 지점에 좌석이 하나씩 있습니다.\n이 시소를 두 명이 마주 보고 탄다고 할 때, 시소가 평형인 상태에서 각각에 의해 시소에 걸리는 토크의 크기가 서로 상쇄되어 완전한 균형을 이룰 수 있다면 그 두 사람을 …","fields":{"slug":"/pg2-152996/"},"frontmatter":{"title":"[프로그래머스] 시소 짝꿍 (JavaScript)","category":"ps","date":"2023년 2월 19일","tags":["프로그래머스","lv2"]}},{"id":"e2b2bac9-b4cb-569c-9735-7b5b6b211252","excerpt":"문제 연습문제 - 뒤에 있는 큰 수 찾기 문제 설명 정수로 이루어진 배열  numbers 가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.\n정수 배열  numbers 가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solut…","fields":{"slug":"/pg2-154539/"},"frontmatter":{"title":"[프로그래머스] 뒤에 있는 큰 수 찾기 (JavaScript)","category":"ps","date":"2023년 2월 19일","tags":["프로그래머스","lv2"]}},{"id":"ac5f6ea0-9b4c-5d8f-86b1-4e64235d6e1e","excerpt":"문제 해시 - 베스트 앨범 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 …","fields":{"slug":"/pg3-42579/"},"frontmatter":{"title":"[프로그래머스] 베스트 앨범 (JavaScript)","category":"ps","date":"2023년 2월 19일","tags":["프로그래머스","lv3","해시"]}},{"id":"b6bf0015-e2af-552f-8185-d5c342e1f8c2","excerpt":"문제 연습문제 - 무인도 여행 문제 설명 메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를…","fields":{"slug":"/pg2-154540/"},"frontmatter":{"title":"[프로그래머스] 무인도 여행 (JavaScript)","category":"ps","date":"2023년 2월 9일","tags":["프로그래머스","lv2"]}},{"id":"c07c84af-6cce-52cd-b92f-3d508fc034e3","excerpt":"문제 Summer/Winter Coding(~2018) - 기지국 설치 문제 설명 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국…","fields":{"slug":"/pg3-12979/"},"frontmatter":{"title":"[프로그래머스] 기지국 설치 (JavaScript)","category":"ps","date":"2023년 2월 9일","tags":["프로그래머스","Summer/Winter Coding(~2018)","lv3"]}},{"id":"32db73a8-5dfb-5c94-904c-4d06dc6269f3","excerpt":"문제 연습문제 - 둘만의 암호 문제 설명 두 문자열  s 와  skip , 그리고 자연수  index 가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. 문자열  s 의 각 알파벳을  index 만큼 뒤의 알파벳으로 바꿔줍니다. index 만큼의 뒤의 알파벳이  z 를 넘어갈 경우 다시 a로 돌아갑니다. skip 에…","fields":{"slug":"/pg1-155652/"},"frontmatter":{"title":"[프로그래머스] 둘만의 암호 (JavaScript)","category":"ps","date":"2023년 2월 6일","tags":["프로그래머스","lv1"]}},{"id":"ec690b97-6fee-5bed-afc8-710f226a46cc","excerpt":"문제 연습문제 - 호텔 대실 문제 설명 호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다.\n예약 시각이 문자열 형태로 담긴 2차원 배열  book_time 이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 retu…","fields":{"slug":"/pg2-155651/"},"frontmatter":{"title":"[프로그래머스] 호텔 대실 (JavaScript)","category":"ps","date":"2023년 2월 6일","tags":["프로그래머스","lv2"]}},{"id":"537a37c6-3e8e-5463-9e97-6d26a20de9cd","excerpt":"Gatsby  4.19  버전부터는  Gatsby Head API 가 추가되었다. 2020년 이후로  react-helmet 이 업데이트가 되지 않고 있는 상황이니 이를 참고하여 작업하면 좋을 것 같다. 필자는 Gatsby  4.17  버전이라서 아직 사용해보지는 못했지만😢, 이를 사용하면  gatsby-plugin-react-helmet 을 사용하지 않…","fields":{"slug":"/gatsby-blog-seo-2/"},"frontmatter":{"title":"Gatsby 블로그 SEO 설정하기 2 - react helmet","category":"gatsby","date":"2023년 2월 4일","tags":["블로그","SEO","reactHelmet"]}},{"id":"110abb74-f52b-53a0-bdea-524eec98601c","excerpt":"SEO에 대한 포스팅은  여기 에서 확인할 수 있다. Gatsby react helmet 설정하는 방법은  Gatsby 블로그 SEO 설정하기 2 - react helmet 에서 확인할 수 있다. 블로그를 운영하면서 웹사이트가 상단에 노출시키고 싶다는 욕심이 생겼다. 그래서 SEO를 설정해보기로 했다. 검색 엔진은 웹사이트의 콘텐츠를 수집하고, 색인화하고…","fields":{"slug":"/gatsby-blog-seo-1/"},"frontmatter":{"title":"Gatsby 블로그 SEO 설정하기 1 - sitemap.xml, robots.txt","category":"gatsby","date":"2023년 2월 3일","tags":["블로그","SEO"]}},{"id":"da896439-cc3c-515d-911e-9754778c83f0","excerpt":"Gatsby 블로그를 제작하면서 구글 검색에 노출 시키기 위해서 SEO를 알게되었고, 좀 더 자세히 알아보고 이 글을 정리하게 되었다. \n 글로벌 검색엔진 점유율은 구글이 90%가 넘는 압도적인 점유율을 차지하고 있다. 또한 국내에서도 60% 이상의 점유율을 차지하고 있다. 따라서 구글 SEO를 기준으로 글을 작성하였다. 구글은 검색 순위 시스템이 유용하…","fields":{"slug":"/what-is-seo/"},"frontmatter":{"title":"검색엔진 최적화(SEO)란 무엇인가?","category":"web","date":"2023년 2월 2일","tags":["SEO"]}},{"id":"720b5ae5-8227-5c1d-b36e-f948542a63f8","excerpt":"문제 2021 KAKAO BLIND RECRUITMENT - 합승 택시 요금 문제 설명 밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던  무지 는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. \"무지\"는 자신이 택시를 이용할 때 동료인  어피치  역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하…","fields":{"slug":"/pg3-72413/"},"frontmatter":{"title":"[프로그래머스] 합승 택시 요금 (JavaScript)","category":"ps","date":"2023년 1월 20일","tags":["프로그래머스","2021 KAKAO BLIND RECRUITMENT","lv3"]}},{"id":"faa161c1-c158-5943-95a9-d94e19940c85","excerpt":"문제 코딩테스트 연습문제 - 명예의 전당 (1) 문제 설명 \"명예의 전당\"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 …","fields":{"slug":"/pg1-138477/"},"frontmatter":{"title":"[프로그래머스] 명예의 전당 (1) (JavaScript)","category":"ps","date":"2023년 1월 16일","tags":["프로그래머스","lv1"]}},{"id":"60d64a8b-da85-5ba8-957f-81f2889d7dc1","excerpt":"문제 연습문제 - 문자열 나누기 문제 설명 문자열  s 가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽…","fields":{"slug":"/pg1-140108/"},"frontmatter":{"title":"[프로그래머스] 문자열 나누기 (JavaScript)","category":"ps","date":"2023년 1월 16일","tags":["프로그래머스","lv1"]}},{"id":"b093d3fa-f581-50ff-9189-f58299ff2db0","excerpt":"문제 2023 KAKAO BLIND RECRUITMENT - 택배 배달과 수거하기 문제 설명 당신은 일렬로 나열된  n 개의 집에 택배를 배달하려 합니다. 배달할 물건은 모두 크기가 같은 재활용 택배 상자에 담아 배달하며, 배달을 다니면서 빈 재활용 택배 상자들을 수거하려 합니다.\n배달할 택배들은 모두 재활용 택배 상자에 담겨서 물류창고에 보관되어 있고,…","fields":{"slug":"/pg2-150369/"},"frontmatter":{"title":"[프로그래머스] 택배 배달과 수거하기 (JavaScript)","category":"ps","date":"2023년 1월 14일","tags":["프로그래머스","2023 KAKAO BLIND RECRUITMENT","lv2"]}},{"id":"27d6d80a-bc10-5c06-84c5-1be4cc93e58e","excerpt":"문제 2023 KAKAO BLIND RECRUITMENT - 이모티콘 할인행사 문제 설명 카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.\n이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다. 이모티콘 플러스 서비스 가입자를 최대한 늘리는 것. 이모티콘 판매액을 최대한 늘리…","fields":{"slug":"/pg2-150368/"},"frontmatter":{"title":"[프로그래머스] 이모티콘 할인행사 (JavaScript)","category":"ps","date":"2023년 1월 13일","tags":["프로그래머스","2023 KAKAO BLIND RECRUITMENT","lv2"]}},{"id":"b024be23-e065-5add-9a3e-df21374b334a","excerpt":"문제 2023 KAKAO BLIND RECRUITMENT - 개인정보 수집 유효기간 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까…","fields":{"slug":"/pg1-150370/"},"frontmatter":{"title":"[프로그래머스] 개인정보 수집 유효기간 (JavaScript)","category":"ps","date":"2023년 1월 9일","tags":["프로그래머스","2023 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"e9d74879-9a37-5bb7-9cf3-c15fedba77dd","excerpt":"문제 연습문제 - 마법의 엘리베이터 문제 설명 마법의 세계에 사는 민수는 아주 높은 탑에 살고 있습니다. 탑이 너무 높아서 걸어 다니기 힘든 민수는 마법의 엘리베이터를 만들었습니다. 마법의 엘리베이터의 버튼은 특별합니다. 마법의 엘리베이터에는 -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수…","fields":{"slug":"/pg2-148653/"},"frontmatter":{"title":"[프로그래머스] 마법의 엘리베이터 (JavaScript)","category":"ps","date":"2023년 1월 9일","tags":["프로그래머스","lv2"]}},{"id":"ddbc6a9c-9d7c-5b01-809d-8d4a06349d16","excerpt":"문제 연습문제 - 가장 가까운 같은 글자 문제 설명 문자열  s 가 주어졌을 때,  s 의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.\n예를 들어,  s =\"banana\"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 …","fields":{"slug":"/pg1-142086/"},"frontmatter":{"title":"[프로그래머스] 가장 가까운 같은 글자 (JavaScript)","category":"ps","date":"2023년 1월 4일","tags":["프로그래머스","lv1"]}},{"id":"cace74a0-e219-5915-aa46-1e86bdf61ecd","excerpt":"문제 연습문제 - 크기가 작은 부분문자열 문제 설명 숫자로 이루어진 문자열  t 와  p 가 주어질 때,  t 에서  p 와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가  p 가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어,  t =\"3141592\"이고  p =\"271\" …","fields":{"slug":"/pg1-147335/"},"frontmatter":{"title":"[프로그래머스] 크기가 작은 부분문자열 (JavaScript)","category":"ps","date":"2023년 1월 4일","tags":["프로그래머스","lv1"]}},{"id":"e7b49023-b5e8-5e15-a46f-5f5d8e9300c3","excerpt":"문제 연습문제 - 기사단원의 무기 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터  number 까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가…","fields":{"slug":"/pg1-136798/"},"frontmatter":{"title":"[프로그래머스] 기사단원의 무기 (JavaScript)","category":"ps","date":"2022년 11월 19일","tags":["프로그래머스","lv1"]}},{"id":"c012ddd8-ef3f-525b-b1d5-82d7b83c08df","excerpt":"문제 연습문제 - 푸드 파이트 대회 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 …","fields":{"slug":"/pg1-134520/"},"frontmatter":{"title":"[프로그래머스] 푸드 파이트 대회 (JavaScript)","category":"ps","date":"2022년 11월 16일","tags":["프로그래머스","lv1"]}},{"id":"37e24991-05e7-50ef-a244-b5a0acb4f6bc","excerpt":"문제 연습문제 - 과일 장수 문제 설명 문제 설명\n과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다.\n상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ …","fields":{"slug":"/pg1-135808/"},"frontmatter":{"title":"[프로그래머스] 과일 장수 (JavaScript)","category":"ps","date":"2022년 11월 15일","tags":["프로그래머스","lv1"]}},{"id":"e5f65042-de9d-5ee2-acfb-54ffd347f416","excerpt":"문제 연습문제 - 숫자짝꿍 문제 설명 두 정수  X ,  Y 의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성…","fields":{"slug":"/pg1-131128/"},"frontmatter":{"title":"[프로그래머스] 숫자짝꿍 (JavaScript)","category":"ps","date":"2022년 11월 14일","tags":["프로그래머스","lv1"]}},{"id":"57258a87-7146-5f75-ba26-44d6a5d09aa6","excerpt":"문제 연습문제 - 햄버거 만들기 문제 설명 햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, …","fields":{"slug":"/pg1-133502/"},"frontmatter":{"title":"[프로그래머스] 햄버거 만들기 (JavaScript)","category":"ps","date":"2022년 11월 14일","tags":["프로그래머스","lv1"]}},{"id":"845d8fd0-c216-5819-a4a5-dc46e49a92cf","excerpt":"문제 연습문제 - 시저 암호 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 \"AB\"는 1만큼 밀면 \"BC\"가 되고, 3만큼 밀면 \"DE\"가 됩니다. \"z\"는 1만큼 밀면 \"a\"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solutio…","fields":{"slug":"/pg1-12926/"},"frontmatter":{"title":"[프로그래머스] 시저 암호 (JavaScript)","category":"ps","date":"2022년 10월 14일","tags":["프로그래머스","lv1"]}},{"id":"1618867c-4916-5028-beee-da4bace70f62","excerpt":"문제 2018 KAKAO BLIND RECRUITMENT - 압축 문제 설명 신입사원 어피치는 카카오톡으로 전송되는 메시지를 압축하여 전송 효율을 높이는 업무를 맡게 되었다. 메시지를 압축하더라도 전달되는 정보가 바뀌어서는 안 되므로, 압축 전의 정보를 완벽하게 복원 가능한 무손실 압축 알고리즘을 구현하기로 했다. 어피치는 여러 압축 알고리즘 중에서 성능…","fields":{"slug":"/pg2-17684/"},"frontmatter":{"title":"[프로그래머스] 압축 (JavaScript)","category":"ps","date":"2022년 9월 12일","tags":["프로그래머스","2018 KAKAO BLIND RECRUITMENT","lv2"]}},{"id":"d446eb14-9736-5aad-86ae-b6af649cd57b","excerpt":"문제 탐욕법(Greedy) - 조이스틱 문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.  \nex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳  \n▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로)  \n◀ - 커서를 왼쪽으로 이…","fields":{"slug":"/pg2-42860/"},"frontmatter":{"title":"[프로그래머스] 조이스틱 (JavaScript)","category":"ps","date":"2022년 9월 12일","tags":["프로그래머스","lv2","탐욕법","Greedy"]}},{"id":"a7043d22-bd98-5736-9369-8e3bd1bcba9e","excerpt":"문제 2019 KAKAO BLIND RECRUITMENT - 실패율 문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을…","fields":{"slug":"/pg1-42889/"},"frontmatter":{"title":"[프로그래머스] 실패율 (JavaScript)","category":"ps","date":"2022년 9월 7일","tags":["프로그래머스","2019 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"4c2df9b9-1b50-558f-88f2-00bd98798367","excerpt":"문제 월간 코드 챌린지 시즌2 - 약수의 개수와 덧셈 문제 설명 두 정수  left 와  right 가 매개변수로 주어집니다.  left 부터  right 까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤  left  ≤  right …","fields":{"slug":"/pg1-77884/"},"frontmatter":{"title":"[프로그래머스] 약수의 개수와 덧셈 (JavaScript)","category":"ps","date":"2022년 9월 6일","tags":["프로그래머스","월간 코드 챌린지 시즌2","lv1"]}},{"id":"2bbe6d20-b9fc-5b2b-81b4-12eb13c570e0","excerpt":"이 글은  gatsby-plugin-mdx  플러그인 사용을 기준으로 작성되었다. 들어가며 대부분의 Gatsby 블로그에서는 마크다운 파일을 파싱하기 위해  gatsby-transformer-remark 를 사용한다. 하지만 필자는 리액트 컴포넌트를  Mdx  내부에서도 사용할 수 있다고 생각해서  gatsby-plugin-mdx 를 사용 중이다! 이를 …","fields":{"slug":"/gatsby-blog-katex/"},"frontmatter":{"title":"Gatsby 블로그 수식 기능 추가하기 - katex","category":"gatsby","date":"2022년 9월 3일","tags":["블로그","katex"]}},{"id":"a0110280-33da-5f41-8f17-c11805d876e9","excerpt":"여러 개발 블로그를 보면 글의 목차를 보여주는 Toc 기능이 있는 것을 볼 수 있다. 보기에 편한 기능도 있지만 개인적으로 멋있어보였다!ㅎㅎ gatsby 블로그에서 Toc기능 구현하는 방법을 찾아보던 중  gatsby-remark-autolink-headers 라는 플러그인을 찾았다. 이 플러그인은 마크다운 파일의  headder 를 찾아서 링크를 걸어주…","fields":{"slug":"/gatsby-blog-toc/"},"frontmatter":{"title":"Gatsby 블로그 Toc 기능 구현하기","category":"gatsby","date":"2022년 9월 3일","tags":["블로그","Toc"]}},{"id":"81a5bdae-ed19-5172-b637-7143f7f5245d","excerpt":"문제 2022 KAKAO BLIND RECRUITMENT - 성격 유형 검사하기 문제 설명 나만의 카카오 성격 유형 검사지를 만들려고 합니다.  \n성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. 지표 번호 성격 유형 1번 지표 라이언형(R), 튜브형(T) 2번 지표 콘형(C), 프로도…","fields":{"slug":"/pg1-118666/"},"frontmatter":{"title":"[프로그래머스] 성격 유형 검사하기 (JavaScript)","category":"ps","date":"2022년 8월 24일","tags":["프로그래머스","2022 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"271cba95-6cd0-5db1-adf4-ff263a1b5df6","excerpt":"문제 2022 KAKAO BLIND RECRUITMENT - 주차 요금 계산 문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 요금표 기본 시간(분) 기본 요금(원) 단위 시간(분) 단위 요금(원) 180 5000 10 600 입/출차 기록 시각…","fields":{"slug":"/pg2-92341/"},"frontmatter":{"title":"[프로그래머스] 주차 요금 계산 (JavaScript)","category":"ps","date":"2022년 8월 24일","tags":["프로그래머스","2022 KAKAO BLIND RECRUITMENT","lv2"]}},{"id":"ee3320db-7fab-5ab5-b467-5da02f55756a","excerpt":"REST란? REST 는 Representational State Transfer의 약자로, 인터넷 상의 자원을 표현하고 상호작용하기 위한 아키텍처 스타일이다. REST는 HTTP 프로토콜을 기반으로 하며, 클라이언트와 서버 간 통신에서 상태를 유지하지 않는 구조를 가지며, 요청과 응답을 통해 데이터를 전송한다. 즉, REST는 URI를 통해 자원을 표현…","fields":{"slug":"/rest-api/"},"frontmatter":{"title":"Rest API란?","category":"javascript","date":"2022년 7월 19일","tags":["비동기","RestAPI"]}},{"id":"3a6de49f-ffec-53a8-b2b3-206a9a9ebcb1","excerpt":"Ajax란? Ajax(Asynchronous JavaScript and XML) 는 브라우저에서 제공하는 Web API인  XMLHttpRequest 객체 를 이용해서 브러우저가 서버와 비동기 통신을 하여 웹페이지의 전체가 아닌 일부분만을 갱신하는 프로그래밍 방식을 말한다. 요약하자면 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML…","fields":{"slug":"/what-is-ajax/"},"frontmatter":{"title":"Ajax란?","category":"javascript","date":"2022년 7월 16일","tags":["비동기","Ajax"]}},{"id":"ab0a1a6b-e6d5-52ea-acb4-f2050da43eda","excerpt":"JSON(JavaScript Object Nation) 은 클라이언트와 서버 간의 HTTP 통신을 위한 텍스트 데이터 포맷이다. JSON은 통신 방법, 프로그래밍 문법이 아닌 단순히  데이터를 표시하는 표현 방법 이다. JSON 표기 방식 JSON은 자바스크립트의 객체 리터럴과 유사하게  키와 값 으로 구성된 순수한 텍스트다. JSON 형식에서는  nul…","fields":{"slug":"/what-is-json/"},"frontmatter":{"title":"JSON(JavaScript Object Notation)이란?","category":"javascript","date":"2022년 7월 16일","tags":["비동기","JSON"]}},{"id":"f16811c8-d9a8-5636-963a-a676df2a1e4f","excerpt":"동기 처리와 비동기 처리 동기 처리 함수를 실행하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다. 이때 생성된 함수 실행 컨텍스트는  실행 컨텍스트 스택(콜 스택; call stack) 에 푸시되고 함수 코드가 실행된다. 콜 스택에 함수 실행 컨텍스트가 푸시되는 것은 함수 실행의 시작을 말한다. 함수가 호출된 순서대로 순차적으로 실행되는 이유는 함…","fields":{"slug":"/js-asynchronous/"},"frontmatter":{"title":"JavaScript: 비동기 처리(이벤트 루프, 태스크 큐)","category":"javascript","date":"2022년 7월 13일","tags":["비동기","이벤트루프","콜스택","태스크큐"]}},{"id":"7be00f74-842d-5e69-a36e-59890615763d","excerpt":"프로미스 프로미스가 등장하기 전에는 콜백 함수를 사용해 비동기 작업을 처리했다. 예를 들어  setTimeout()  함수가 있다. 콜백 함수는 비동기 데이터를 다루는 좋은 방법이다. 하지만 전통적인 콜백 패턴은 비동기 함수 호출이 중첩되는  콜백 헬 로 인해 가독성이 떨어지고 에러 처리가 어려우며, 여러 개의 비동기 작업을 한 번에 처리하는 데도 한계가…","fields":{"slug":"/promise/"},"frontmatter":{"title":"JavaScript: 프로미스(Promise)란?","category":"javascript","date":"2022년 7월 9일","tags":["프로미스","비동기"]}},{"id":"81b9ed81-4eb5-50d4-bc77-5d3e9867de83","excerpt":"문제 2021 KAKAO BLIND RECRUITMENT - 메뉴 리뉴얼 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 …","fields":{"slug":"/pg2-72411/"},"frontmatter":{"title":"[프로그래머스] 메뉴 리뉴얼 (JavaScript)","category":"ps","date":"2022년 7월 8일","tags":["프로그래머스","2021 KAKAO BLIND RECRUITMENT","lv2"]}},{"id":"9851ff38-a40d-577c-980d-8e50bf18e8b1","excerpt":"문제 그래프 - 순위 문제 설명 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매…","fields":{"slug":"/pg3-49191/"},"frontmatter":{"title":"[프로그래머스] 순위 (JavaScript)","category":"ps","date":"2022년 7월 8일","tags":["프로그래머스","lv3","그래프"]}},{"id":"6698af98-962f-53e1-a074-e57e6a569872","excerpt":"문제 2018 KAKAO BLIND RECRUITMENT - 파일명 정렬 문제 설명 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로…","fields":{"slug":"/pg2-17686/"},"frontmatter":{"title":"[프로그래머스] 파일명 정렬 (JavaScript)","category":"ps","date":"2022년 7월 7일","tags":["프로그래머스","2018 KAKAO BLIND RECRUITMENT","lv2"]}},{"id":"a39f9fe8-6708-5705-92bc-f59a6e5ca4b7","excerpt":"문제 2018 KAKAO BLIND RECRUITMENT - 다트 게임 문제 설명 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.\n갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다…","fields":{"slug":"/pg1-17682/"},"frontmatter":{"title":"[프로그래머스] 다트 게임 (JavaScript)","category":"ps","date":"2022년 7월 6일","tags":["프로그래머스","2018 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"50dae7cc-dc4d-5f23-b119-c6ba94449fae","excerpt":"문제 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 문제 설명 게임개발자인 \"죠르디\"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다.\n\"죠르디\"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 \"1 x 1\" 크기의 칸들로 이루어진 \"N x N\" 크기의 정사각 격자이며 위쪽에…","fields":{"slug":"/pg1-64061/"},"frontmatter":{"title":"[프로그래머스] 크레인 인형뽑기 게임 (JavaScript)","category":"ps","date":"2022년 7월 6일","tags":["프로그래머스","2019 카카오 개발자 겨울 인턴십","lv1"]}},{"id":"b6decd1a-02bc-5177-884c-1ad5458ed063","excerpt":"문제 연습문제 - 소수 찾기 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.  \n(1은 소수가 아닙니다.) 제한사항 n은 2이상 1000000이하의 자연수입니다. 입출력 예 n result 10 4 5 3 코드 문제 풀이 에라토스테네스…","fields":{"slug":"/pg1-12921/"},"frontmatter":{"title":"[프로그래머스] 소수 찾기 (JavaScript)","category":"ps","date":"2022년 7월 5일","tags":["프로그래머스","lv1"]}},{"id":"5f229370-3ff6-5166-97c8-41dbe2cd99d9","excerpt":"문제 연습문제 - 콜라 문제 문제 설명 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라…","fields":{"slug":"/pg1-132267/"},"frontmatter":{"title":"[프로그래머스] 콜라 문제 (JavaScript)","category":"ps","date":"2022년 7월 5일","tags":["프로그래머스","lv1"]}},{"id":"d170c77c-b3a1-5889-93a8-a6e3f39b6bf6","excerpt":"문제 2021 KAKAO BLIND RECRUITMENT - 신규 아이디 추천 문제 설명 카카오에 입사한 신입 개발자 네오는 \"카카오계정개발팀\"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. \"네오\"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아…","fields":{"slug":"/pg1-72410/"},"frontmatter":{"title":"[프로그래머스] 신규 아이디 추천 (JavaScript)","category":"ps","date":"2022년 7월 5일","tags":["프로그래머스","2021 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"ccfe593b-2d9d-57c7-9b64-39bf89b7de38","excerpt":"문제 2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3…","fields":{"slug":"/pg1-77484/"},"frontmatter":{"title":"[프로그래머스] 로또의 최고 순위와 최저 순위 (JavaScript)","category":"ps","date":"2022년 7월 5일","tags":["프로그래머스","2021 Dev-Matching: 웹 백엔드 개발자(상반기)","lv1"]}},{"id":"7649b271-39db-5fd9-b0aa-9deb8bfdd773","excerpt":"문제 연습문제 - 거스름돈 문제 설명 Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다. 예를 들어서 손님께 5원을 거슬러 줘야 하고 1원, 2원, 5원이 있다면 다음과 같이 4가지 방법으로 5원을 거슬러 줄 수 있습니다. 1원을 5…","fields":{"slug":"/pg3-12907/"},"frontmatter":{"title":"[프로그래머스] 거스름돈 (JavaScript)","category":"ps","date":"2022년 7월 5일","tags":["프로그래머스","lv3"]}},{"id":"fbd4787f-213f-57c6-a86b-f2a239ee0bc7","excerpt":"문제 탐욕법(Greedy) - 체육복 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만…","fields":{"slug":"/pg1-42862/"},"frontmatter":{"title":"[프로그래머스] 체육복 (JavaScript)","category":"ps","date":"2022년 7월 4일","tags":["프로그래머스","lv1"]}},{"id":"8efd9695-b0b4-5ae5-8e3a-cf61af088b4b","excerpt":"문제 2020 카카오 인턴십 - 키패드 누르기 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다.  \n맨 처음 왼손 엄지손가락은  *  키패드에 오른손 엄지손가락은  #  키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니…","fields":{"slug":"/pg1-67256/"},"frontmatter":{"title":"[프로그래머스] 키패드 누르기 (JavaScript)","category":"ps","date":"2022년 7월 4일","tags":["프로그래머스","lv1"]}},{"id":"1a42a113-2e28-5229-9b83-547d352e0a2e","excerpt":"문제 2022 KAKAO BLIND RECRUITMENT - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 …","fields":{"slug":"/pg1-92334/"},"frontmatter":{"title":"[프로그래머스] 신고 결과 받기 (JavaScript)","category":"ps","date":"2022년 7월 4일","tags":["프로그래머스","2022 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"a831be98-bd89-56f5-9df3-471df8e28de4","excerpt":"문제 해시 - 완주하지 못한 선수 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solutio…","fields":{"slug":"/pg1-42576/"},"frontmatter":{"title":"[프로그래머스] 완주하지 못한 선수 (JavaScript)","category":"ps","date":"2022년 7월 4일","tags":["프로그래머스","lv1","해시"]}},{"id":"9cfb1d45-9c1a-5446-a430-0f6e78543d12","excerpt":"문제 2018 KAKAO BLIND RECRUITMENT - [1차]비밀 지도 문제 설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가  n …","fields":{"slug":"/pg1-17681/"},"frontmatter":{"title":"[프로그래머스] [1차]비밀 지도 (JavaScript)","category":"ps","date":"2022년 6월 23일","tags":["프로그래머스","2018 KAKAO BLIND RECRUITMENT","lv1"]}},{"id":"935abacc-a8a6-5010-998f-6e83b275fa36","excerpt":"문제 월간 코드 챌린지 시즌1 - 3진법 뒤집기 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 코드 문제 풀…","fields":{"slug":"/pg1-68935/"},"frontmatter":{"title":"[프로그래머스] 3진법 뒤집기 (JavaScript)","category":"ps","date":"2022년 6월 22일","tags":["프로그래머스","월간 코드 챌린지 시즌1","lv1"]}},{"id":"ec1492fe-f721-5b97-873f-8140d52f1d7b","excerpt":"문제 스택/큐 - 기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순…","fields":{"slug":"/pg2-42686/"},"frontmatter":{"title":"[프로그래머스] 기능개발 (JavaScript)","category":"ps","date":"2022년 6월 22일","tags":["프로그래머스","lv2","스택","큐"]}},{"id":"ad0362cd-385f-53f3-942b-6e140603a22e","excerpt":"Rest 파라미터 Rest 파라미터 는 매개변수 이름 앞에 세개의 점( … )을 붙여서 정의한 매개변수를 말한다.  Rest 파라미터는 함수에 전달된 인수들의 목록을 배열로 전달받는다. Rest 파라미터는 일반 매개변수와 함께 사용할 수 있다. 이때  Rest 파라미터는 반드시 마지막 파라미터이어야 한다. Rest 파라미터는 단 하나만 선언할 수 있다. …","fields":{"slug":"/rest-and-spread/"},"frontmatter":{"title":"JavaScript: Rest 파라미터, Spread 문법","category":"javascript","date":"2022년 6월 6일","tags":["rest parameters","spread"]}},{"id":"a937c369-7b20-5a77-9c3f-90becfad0401","excerpt":"제너레이터란? ES6에서 도입된  제너레이터(generator) 는 코드 블록의 실행을 일시 중지 했다가 필요한 시점에 재개할 수 있는 특수한 함수다. 일반 함수와 제너레이터의 차이점 1. 제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다. 일반 함수를 호출하면 제어권이 함수에게 넘어가고 함수 코드를 일괄 실행한다. 즉 함수 함수 호…","fields":{"slug":"/js-generator/"},"frontmatter":{"title":"JavaScript: 제너레이터(generator)와 async/await","category":"javascript","date":"2022년 6월 4일","tags":["제너레이터","async","await"]}},{"id":"a8448c77-583d-5dd5-aafa-110dbf6a2e34","excerpt":"문제 해시 - 폰켓몬 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.\n홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들…","fields":{"slug":"/pg1-1845/"},"frontmatter":{"title":"[프로그래머스] 폰켓몬 (JavaScript)","category":"ps","date":"2022년 5월 31일","tags":["프로그래머스","lv1","해시"]}},{"id":"9c9b665d-06b9-5949-af68-6f885884c1c6","excerpt":"화살표 함수 화살표 함수(arrow function) 는  function  키워드 대신 화살표  => 를 사용하여 기존의 함수 정의 방식보다 간략하게 함수를 정의할 수 있다. 화살표 함수는 표현만 간략한 것이 아니라 내부 동작도 기존의 함수보다 간략하다. 화살표 함수는 함수 선언문으로 정의할 없고 함수 표현식으로 정의해야 한다. 호출 방식은 기존 한수와…","fields":{"slug":"/arrow-function/"},"frontmatter":{"title":"JavaScript: 화살표 함수(Arrow Function)","category":"javascript","date":"2022년 5월 19일","tags":["화살표함수","콜백함수"]}},{"id":"bda1f430-d559-56b4-b344-c5f6b291e500","excerpt":"문제 연습문제 - 이상한 문자 만들기 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 …","fields":{"slug":"/pg1-12930/"},"frontmatter":{"title":"[프로그래머스] 이상한 문자 만들기 (JavaScript)","category":"ps","date":"2022년 4월 16일","tags":["프로그래머스","lv1"]}},{"id":"b3c6772b-59ca-5de6-8389-c16cc300be4d","excerpt":"문제 2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어 문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → \"one4seveneight\" 234567 → \"2…","fields":{"slug":"/pg1-81301/"},"frontmatter":{"title":"[프로그래머스] 숫자 문자열과 영단어 (JavaScript)","category":"ps","date":"2022년 4월 15일","tags":["프로그래머스","2021 카카오 채용연계형 인턴십","lv1"]}},{"id":"4c1e9918-3f87-5a97-952e-a7e1a9530e56","excerpt":"문제 Summer/Winter Coding(~2018) - 예산 문제 설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해…","fields":{"slug":"/pg1-12982/"},"frontmatter":{"title":"[프로그래머스] 예산 (JavaScript)","category":"ps","date":"2022년 4월 14일","tags":["프로그래머스","Summer/Winter Coding(~2018)","lv1"]}},{"id":"df6f513c-6a2b-5d23-88b0-d4129e55bcfa","excerpt":"문제 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers…","fields":{"slug":"/pg1-68644/"},"frontmatter":{"title":"[프로그래머스] 두 개 뽑아서 더하기 (JavaScript)","category":"ps","date":"2022년 4월 12일","tags":["프로그래머스","월간 코드 챌린지 시즌1","lv1"]}},{"id":"77466ef4-9355-52bc-a918-46b30b3819fc","excerpt":"클로저에 대해 이해하기 위해 실행 컨텍스트, 스코프에 대한 사전 지식이 있으면 이해하기 쉽다. 자세한 내용은  JavaScript: 실행 컨텍스트(Execution Context)란? ,  JavaScript: 스코프(Scope)란? 에서 확인할 수 있다. 클로저 클로저 는 자바스크립트 고유의 개념이 아니므로 ECMAScript사양에 등장하지 않는다. M…","fields":{"slug":"/js-closure/"},"frontmatter":{"title":"JavaScript: 클로저(Closure)","category":"javascript","date":"2022년 4월 7일","tags":["렉시컬스코프","클로저"]}},{"id":"f5c7af96-63f0-59c4-90d0-697853b11672","excerpt":"문제 Summer/Winter Coding(~2018) - 소수 만들기 문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완…","fields":{"slug":"/pg1-12977/"},"frontmatter":{"title":"[프로그래머스] 소수 만들기 (JavaScript)","category":"ps","date":"2022년 4월 7일","tags":["프로그래머스","Summer/Winter Coding(~2018)","lv1"]}},{"id":"72f2f92a-3eae-5983-a572-7e170a98c08b","excerpt":"문제 완전탐색 - 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...  \n2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2…","fields":{"slug":"/pg1-42840/"},"frontmatter":{"title":"[프로그래머스] 모의고사 (JavaScript)","category":"ps","date":"2022년 4월 7일","tags":["프로그래머스","완전탐색","lv1"]}},{"id":"32950de6-59e4-5905-ac97-2f27f214e0e3","excerpt":"문제 정렬 - K번째 수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가  1, 5, 2, 6, 3, 7, 4 , i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면  5, 2, 6, 3 입니다. 1에서 나온 배열을 정렬하면  2, …","fields":{"slug":"/pg1-42748/"},"frontmatter":{"title":"[프로그래머스] K번째 수 (JavaScript)","category":"ps","date":"2022년 4월 7일","tags":["프로그래머스","lv1","정렬"]}},{"id":"f884ab68-015a-5235-bbd7-bae469d3fe2f","excerpt":"실행 컨텍스트(execution context) 는  scope ,  hoisting ,  function ,  this ,  closure  등의 동작 원리를 담고 있는 자바스크립트의 핵심 원리이다. ECMAScript 사양은 소스코드를 4가지 타입으로 구분한다. 전역 코드(global code) 함수 코드(function code) eval 코드(ev…","fields":{"slug":"/execution-context/"},"frontmatter":{"title":"JavaScript: 실행 컨텍스트(Execution Context)란?","category":"javascript","date":"2022년 4월 6일","tags":["실행컨텍스트","렉시컬환경","스코프"]}},{"id":"bcdaab0d-7f7c-5ec1-80f4-05202b8d5cd1","excerpt":"this 키워드 this 는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. this 는 자바스크립트 엔진에 의해 암묵적으로 생성되며, 코드 어디서든 참조할 수 있다. 함수를 호출하면  arguments  객체와  this 가…","fields":{"slug":"/js-this/"},"frontmatter":{"title":"JavaScript: this란?","category":"javascript","date":"2022년 4월 4일","tags":["this"]}},{"id":"e6b84378-3936-50a3-820b-c481a2957e33","excerpt":"BFS에 대해 알아보기 전에 우선 그래프(graph), 큐(queue)에 대한 이해가 필요하다. 그래프에 대한 설명은  [자료구조] 그래프(Graph)란? , 큐에 대한 설명은  [자료구조] JavaScript로 구현하는 큐 에 자세히 정리해두었다. BFS란? BFS(Breadth First Search) 는 너비 우선 탐색이라고 하며 시작 노드로부터 가…","fields":{"slug":"/bfs-using-js/"},"frontmatter":{"title":"[알고리즘] JavaScript로 구현하는 BFS","category":"algorithm","date":"2022년 3월 30일","tags":["그래프","큐","bfs"]}},{"id":"165acf19-4498-5d62-90c4-19a34fc4936b","excerpt":"dfs에 대해 알아보기 전에 우선 그래프에 대한 이해가 필요하다. 그래프에 대한 설명은  여기 에 자세히 정리해두었다. DFS란? DFS(Depth-First-Search) 는  깊이 우선 탐색 이라고 하며 그래프에서 깊은 부분을 우선으로 탐색하는 알고리즘이다. DFS는 트리에서 생각하면 이해하기 쉽다(트리도 그래프의 일종이다). 트리를 탐색할 때 시작 …","fields":{"slug":"/dfs-using-js/"},"frontmatter":{"title":"[알고리즘] JavaScript로 구현하는 DFS","category":"algorithm","date":"2022년 3월 29일","tags":["그래프","dfs"]}},{"id":"2d754e7d-e62b-5271-8917-db3f51598f34","excerpt":"var 키워드의 문제점 ES5까지 변수를 선언할 수 있는 유일한 방법은  var  키워드를 사용하는 것이었다. 먼저  var  키워드를 사용하면 생기는 여러 문제점에 대해 알아보자. 변수 중복 선언 허용 var 키워드로 선언한 변수는 중복 선언이 가능하다. 다음 코드를 보자. 변수  x ,  y 는 중복으로 선언되었다. 이처럼  var  키워드를 사용하면…","fields":{"slug":"/let-and-const-keyword/"},"frontmatter":{"title":"JavaScript: let, const 키워드","category":"javascript","date":"2022년 3월 21일","tags":["var","let","const","스코프","호이스팅"]}},{"id":"c37e68b9-2481-59fd-8131-8ad940baba25","excerpt":"let ,  const  키워드에 대해서는  let, const 키워드 에서 자세히 다루고 있다. 실행 컨텍스트에 대해서는  실행 컨텍스트(Execution Context)란? 에서 자세히 다루고 있다. 스코프란? 스코프(scope) 는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. 자바스크립트의 스코프는 다른 언어의 스코프와 …","fields":{"slug":"/js-scope/"},"frontmatter":{"title":"JavaScript: 스코프(Scope)란?","category":"javascript","date":"2022년 3월 19일","tags":["스코프"]}},{"id":"9abfd02a-606c-5db5-9ec0-52122242264b","excerpt":"즉시 실행 함수 함수 정의와 동시에 즉시 호출되는 함수를  즉시 실행 함수(IIFE, Immediately Invoked Function Expression) 라고 한다. 즉시 실행 함수는 한 번만 호출되며 다시 호출할 수 없다. 즉시 실행 함수는 익명 함수를 사용하는 것이 일반적이다. 즉시 실행 함수는 그룹 연산자로 감싸야 한다. 그렇지 않으면 에러가 …","fields":{"slug":"/types-of-functions/"},"frontmatter":{"title":"JavaScript: 함수의 종류와 특징","category":"javascript","date":"2022년 3월 16일","tags":["IIFE","콜백함수","메서드","화살표함수"]}},{"id":"0d2b3e89-7907-5304-ac48-091bbc1b2b5b","excerpt":"함수란? 함수는 자바스크립트에서 중요한 핵심 개념이다. 스코프, 실행 컨텍스트, 클로저, 생성자 함수, 메서드, this, 프로토타입 등 모두 함수와 깊은 관련이 있다. 프로그래밍 언어의  함수(function) 는 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것을 말한다. 자바스크립트의 함수는 객체 …","fields":{"slug":"/js-function/"},"frontmatter":{"title":"JavaScript: 함수 선언 방법과 함수 호이스팅","category":"javascript","date":"2022년 3월 15일","tags":["함수선언문","함수표현식","함수호이스팅"]}},{"id":"086e1bec-c3af-5396-a022-57e8a7fb4477","excerpt":"문제 연습문제 - 최대공약수와 최소공배수 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는  3, 12 를 반환해야 합니…","fields":{"slug":"/pg1-12940/"},"frontmatter":{"title":"[프로그래머스] 최대공약수와 최소공배수 (JavaScript)","category":"ps","date":"2022년 3월 13일","tags":["프로그래머스","lv1"]}},{"id":"32841ade-2ea8-5069-a092-f1b742e3c5a9","excerpt":"원시 타입 원시 타입의 값(원시 값)은  변경 불가능한 값(Immutable Value) 이다. 즉,  읽기 전용(read-only) 값 이다. 원시 값은 변경 불가능한 값이기 때문에 값을 직접 변경할 수 없다. 따라서 변수 값을 변경하기 위해서는 새로운 메모리 공간을 확보하고 재할당할 값을 저장한 후, 변수가 가리키고 있던 메모리 공간의 주소를 변경한다…","fields":{"slug":"/primitive-and-object/"},"frontmatter":{"title":"JavaScript: 원시 타입과 객체 타입","category":"javascript","date":"2022년 3월 11일","tags":["원시타입","객체타입"]}},{"id":"c5590037-4a83-5b2b-8154-6200132e6150","excerpt":"그래프(Graph)란? 그래프는 객체 사이의 연결 관계를 표현할 수 있는 자료 구조로 실제 세계의 현상이나 사물을  정점(vertex) 과  간선(edge) 으로 표현한 것이다. 전기 소자를 그래프로 표현하게 되면 전기 회로의 소자들이 어떻게 연결되어 있는지를 표현해야 회로가 제대로 동작하는지 분석할 수 있으며, 운영 체제에서는 프로세스와 자원들이 어떻게…","fields":{"slug":"/graph/"},"frontmatter":{"title":"[자료구조] 그래프(Graph)의 개념","category":"cs","date":"2022년 3월 7일","tags":["자료구조","그래프"]}},{"id":"07010d0c-c049-5e0e-aa73-8e7b9b0f9afb","excerpt":"단축 평가 논리 연산자를 사용한 단축 평가 논리합( || ) 또는 논리곱( && ) 연산자 표현식의 평가 결과는 불리언 값이 아닐 수도 있다. 논리합( || ) 또는 논리곱( && ) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다. 논립곱 연산자 논리곱 연산자는 두 개의 피연산자가 모두  true 로 평가될 때  true 를 반환한다.…","fields":{"slug":"/js-short-circuitevaluation/"},"frontmatter":{"title":"JavaScript: 단축 평가","category":"javascript","date":"2022년 3월 7일","tags":["단축평가","옵셔널체이닝","null병합연산자"]}},{"id":"92b72789-c2b7-5ed1-84a0-a69fc2c6c3fd","excerpt":"타입 변환이란? 자바스크립트의 모든 값은 타입이 있다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다. 개발자가 의도적으로 타입을 변환하는 것을  명시적 타입 변환(explicit coercion)  또는  타입 캐스팅(type casting) 이라 한다. 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변…","fields":{"slug":"/js-type-coercion/"},"frontmatter":{"title":"JavaScript: 타입 변환(type coercion)","category":"javascript","date":"2022년 3월 7일","tags":["데이터타입","타입변환"]}},{"id":"13e6e213-42c4-59ef-93c5-4c020522ddd6","excerpt":"이진 탐색이란? 이진 탐색(binary search) 은  검색 범위를 줄여 나가면서 원하는 데이터를 검색하는 알고리즘이다. 이진 탐색은 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘이다. 데이터가 무작위일 때는 사용할 수 없지만, 정렬된 데이터에서 매우 빠르게 데이터를 찾을 수 있다. 이진 탐색은 실제로 우리가 일상생활에서 많이 이용하고 있는 방법…","fields":{"slug":"/binary-search/"},"frontmatter":{"title":"이진 탐색(Binary Search) 알고리즘 개념 및 구현","category":"algorithm","date":"2022년 3월 4일","tags":["트리","이진탐색"]}},{"id":"d19c8b61-a238-5af8-b2f1-c4a35617c506","excerpt":"병합 정렬(Merge Sort)이란? 병합 정렬(Merge Sort) 은  분할 정복 기법(Divide and Conquer) 과  재귀 용법 을 활용한 정렬 알고리즘이다. 병합 정렬은 정렬할 원소 목록을 원소가 하나 밖에 남지 않을 때까지 절반으로 잘라 비슷한 크기의 두 부분으로 계속 나눈다. 정렬할 때는 각 절반의 가장 작은 요소를 비교하여 수행된다.…","fields":{"slug":"/merge-sort/"},"frontmatter":{"title":"[알고리즘] 병합 정렬 알고리즘(Merge sort)","category":"algorithm","date":"2022년 3월 2일","tags":["정렬","병합 정렬"]}},{"id":"f7b25b60-959d-5eda-b0b5-bb2782ba0bb2","excerpt":"퀵 정렬이란? 퀵 정렬은 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 알고리즘이다. 퀵 정렬은 병합 정렬과 비슷하게 전체 데이터 리스트를 2개의 부분 리스트로 분할하고, 각각의 부분 리스트를 다시 퀵 정렬하는  분할 정복법(Divide-and-Conquer) 을 사용한다. 그러나 퀵 정렬은 병합 정렬과 다르게 데이터 리스트를 비균등하게 분할한다. 퀵 …","fields":{"slug":"/quick-sort/"},"frontmatter":{"title":"[알고리즘] 퀵 정렬 알고리즘(Quick sort)","category":"algorithm","date":"2022년 3월 2일","tags":["정렬","퀵정렬"]}},{"id":"e6dba168-d4ea-5508-952d-2de45e34ec41","excerpt":"데이터 타입(data type) 은 값의 종류를 말한다. 자바스크립트는 7개 데이터 타입을 제공하고 이 데이터 타입들은 원시 타입(primitive type)과 객체 타입(object type)으로 분류할 수 있다. 숫자 타입 자바스크립트는 하나의 숫자 타입만 존재한다. ECMAScript 사양에 따르면 숫자 타입은  배정밀도 64비트 부동소수점 형식 을…","fields":{"slug":"/js-data-type/"},"frontmatter":{"title":"JavaScript: 데이터 타입(Data type)","category":"javascript","date":"2022년 3월 2일","tags":["데이터타입"]}},{"id":"027411f7-34bf-5c7b-8d61-c26728f34714","excerpt":"변수란 무엇인가? 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다. 변 수란 무엇인지 그리고 왜 필요한지 알아보자. 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다. 메모리 주소를 통해 값에 직접 접근하는 것은 치명적이 오류를 발생시킬 수 있기 때문이다. 따라서 변수를 통해 메모리에 안전하게 접근해야 한다. 변수의 정의를 내…","fields":{"slug":"/js-variables/"},"frontmatter":{"title":"JavaScript: 변수(variables)","category":"javascript","date":"2022년 3월 1일","tags":["var","스코프","호이스팅"]}},{"id":"7c6fd0e3-5add-5f29-8895-5699f5591871","excerpt":"삽입 정렬(Insertion Sort)이란? 삽입 정렬은 선택 정렬처럼 동작 원리를 직관적으로 이해하기 쉬운 알고리즘이다. 삽입 정렬은 특정한 데이터를 적절한 위치에 삽입한다는 의미에서  삽입 정렬(Insertion Sort) 이라고 한다. 삽입 정렬은 필요할 때만 위치를 바꾸므로  데이터가 거의 정렬 되어 있을 때  훨씬 효율적이다. 선택 정렬은 현재 …","fields":{"slug":"/insertion-sort/"},"frontmatter":{"title":"[알고리즘] 삽입 정렬 알고리즘(Insertion sort)","category":"algorithm","date":"2022년 2월 25일","tags":["정렬","삽입정렬"]}},{"id":"be74f798-7e4a-50e4-ad98-05d0619dbf6f","excerpt":"선택 정렬(Selection Sort)이란? 선택 정렬의 원리 정렬되지 않은 원소 중 가장 작은 원소를 찾아 정렬된 요소의 끝에 배치한다. 즉, 배열의 요소 중에서 최소값을 발견한 다음, 이 최소값을 배열의 첫번째 요소와 교환환다. 첫번째 요소를 제외한 나머지 요소들 중에서 가장 작은 값을 선택하고 이를 두번째 요소와 교환한다. 이 과정을 배열이 정렬될 …","fields":{"slug":"/selection-sort/"},"frontmatter":{"title":"[알고리즘] 선택 정렬 알고리즘(Selection sort)","category":"algorithm","date":"2022년 2월 25일","tags":["정렬","선택정렬"]}},{"id":"2b2e335d-d224-5d56-8ba3-2f4f651743b5","excerpt":"이진 트리(Binary Tree)란? 이진 트리는 트리 중에서 가장 널리 쓰이는 트리이다. 자식노드가 최대 두 개인 노드들로 구성된 트리를  이진 트리(binary tree) 라고 한다. 트리와 이진 트리의 차이점 이진 트리의 모든 노드는 차수가 2이하이다. 즉, 자식 노드의 개수가 2 이하이다. 반면 일반 트리는 자식 노드의 개수에 제한이 없다. 이진 …","fields":{"slug":"/binary-tree/"},"frontmatter":{"title":"이진 트리(binary tree)와 이진 탐색 트리(binary search tree)","category":"cs","date":"2022년 2월 24일","tags":["자료구조","트리","이진트리","이진탐색트리"]}},{"id":"05f94ec1-2666-54b3-a601-f1afaf771bc2","excerpt":"트리(Tree)란? 트리는 계층적인 구조를 표현하는 자료구조로, 여러 개의 노드(Node)로 구성되어 있다. 이 노드들은 부모(Parent)와 자식(Child) 관계를 가지며, 서로 다른 노드들을 연결하는 에지(Edge)로 이루어져 있다. 트리는 다양한 분야에서 사용되며, 특히 데이터베이스, 운영체제, 알고리즘 등에서 널리 사용된다. 예를 들어, 파일 시…","fields":{"slug":"/tree/"},"frontmatter":{"title":"트리(Tree)의 개념과 용어 설명","category":"cs","date":"2022년 2월 23일","tags":["자료구조","트리"]}},{"id":"d1479ea5-9bf4-5f04-8ad2-bea63f0af7af","excerpt":"큐(Queue)란? 큐(Queue) 는  선입선출(FIFO: First-In First-Out)  구조를 가지는 자료구조다. 스택은 나중에 들어온 데이터가 먼저 나가는 구조이지만 큐는 먼저 들어온 데이터가 먼저 나가는 구조이다. 큐의 예로는 매표소나 드라이브 스루를 들 수 있다. 줄 서 있는 사람 중에서 가장 앞에 있는 사람(즉 가장 먼저 온 사람)이 먼…","fields":{"slug":"/queue-using-js/"},"frontmatter":{"title":"[자료구조] JavaScript로 큐(Queue) 구현하기","category":"cs","date":"2022년 2월 17일","tags":["자료구조","큐"]}}]}},"pageContext":{}},"staticQueryHashes":["1225397372"]}