{"componentChunkName":"component---src-pages-index-js","path":"/","result":{"data":{"site":{"siteMetadata":{"title":"Zayden","configs":{"countOfInitialPost":10}}},"allMarkdownRemark":{"edges":[{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. Lighthouse를 통한 분석 해당 서비스를 Lighthouse를 사용하여 분석을 해보면 다음과 같이 결과가 나옵니다.  Diagnostics 섹션의 ‘Serve static assets with an efficient…","fields":{"slug":"/frontendPerformance/cache/"},"frontmatter":{"date":"August 13, 2023","title":"캐시 최적화","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"이번 글에서는 우리가 자주 사용하는 async, await 관련해서 살펴보겠습니다. async, await에 대한 사용하는 방법에 대한 부분은 다루지 않고 어떻게 구현되어있는지에 대하여 알아보겠습니다. async-await async-await은 ECMAScript 2017에서 표준으로 정의되었습니다. 비동기 프로그래밍을 동기 방식처럼 직관적으로 표현할 …","fields":{"slug":"/yagmyagm/asynawait/"},"frontmatter":{"date":"August 12, 2023","title":"알고 쓰자 - async, await","category":"야금야금","draft":false}}},{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 폰트 분석하기 브라우저 개발자도구에서 Network 패널에서 throttle 설정을 ‘Fast 3G’로 설정 후 폰트가 적용된 부분을 확인하면 아래와 같습니다. 폰트 적용 전  폰트 적용 후  이러한 현상은 텍스트가 보이…","fields":{"slug":"/frontendPerformance/font/"},"frontmatter":{"date":"August 11, 2023","title":"폰트 최적화","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 느린 이미지 로딩 분석 개발자 도구에서 Network 패널을 통해 분석할 이미지를 살펴보면, 파일 크기가 매우 큰 것을 볼 수 있습니다. 이미지 사이즈가 크면 다운로드에 많은 시간이 걸리고 그만큼 다른 작업에 영향을 줍니…","fields":{"slug":"/frontendPerformance/imagsSize/"},"frontmatter":{"date":"August 11, 2023","title":"이미지 사이즈 최적화","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 네트워크 분석 네트워크를 확인할 때는 명확한 흐름을 파악할 수 있도록 네트워크에 throttling을 적용합니다. 물론 기본으로 제공되는 ‘Fast 3G’ 나 ‘Slow 3G’ 설정을 적용 할 수 있으나 이번에는 기본 설…","fields":{"slug":"/frontendPerformance/lazyImagLoad/"},"frontmatter":{"date":"August 08, 2023","title":"이미지 지연 로딩","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"문제 설명 정수 배열 nums가 주어졌을 때, 이 되도록 모든 삼중 항 을 반환합니다. 솔루션 집합에 중복된 삼중항이 포함되어서는 안됩니다. 예시 1 예시 2 예시 3 제약 조건:   문제 접근 입력받은 배열을 오름차순으로 정렬 후 세 개의 포인터를 이용히여 합이 0인지 비교해 나갑니다. 입력받은 배열을 복사하고 오름차순으로 정렬한다. 인덱스 i 부터 n…","fields":{"slug":"/algorithm/leetcode/15/"},"frontmatter":{"date":"July 31, 2023","title":"leetcode - 3Sum","category":"Algorithm","draft":false}}},{"node":{"excerpt":"모듈이 어떠한 문제를 해결하는가?! javascript로 코드를 작성할때 변수를 선언하거나 변수를 가지고 어떠한 코드를 작성하거나 변수에 값을 할당하거나 즉, 변수 관리를 해본적이 있으실겁니다. 잘 생각해보면 코드를 작성하는 과정 대부분은 변수를 변경하는 것입니다. 그러므로 이러한 변수를 어떻게 구성하는지가 코드를 작성하는 능력이나 코드 유지 관리 능력에…","fields":{"slug":"/yagmyagm/esmodule/"},"frontmatter":{"date":"July 30, 2023","title":"ES module로 깊은 다이빙~🐬","category":"야금야금","draft":false}}},{"node":{"excerpt":"문제 설명 정수 배열의 숫자가 주어지면, 엄격하게 증가하는 가장 긴 길이의 서브 시퀀스. 예시 1 예시 2 예시 3 제약 조건:   문제 접근 동적 계획법을 이용하여 접근합니다. 배열의 두번째 자료부터 시작하여 이전 요소와 비교합니다. nums 배열의 길이만큰 빈 배열을 생성아여 모든 요소를 1로 채웁니다. 기준을 두번째 자료부터 시작하여 이전 요소까지 …","fields":{"slug":"/algorithm/leetcode/300/"},"frontmatter":{"date":"July 30, 2023","title":"leetcode - Longest Increasing Subsequence","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 감소하지 않는 순서로 정렬된 정수 배열이 주어졌을 때, 주어진 목표 값의 시작과 끝 위치를 구합니다. 배열에서 목표값을 찾을 수 없으면 -1, -1을 반환합니다. 런타임 복잡도가 O(log n)인 알고리즘을 작성해야 합니다. 예시 1 예시 2 예시 3 제약 조건:    is a non-decreasing array.  문제 접근 투 포인터를 사…","fields":{"slug":"/algorithm/leetcode/34/"},"frontmatter":{"date":"July 29, 2023","title":"leetcode - Find First and Last Position of Element in Sorted Array","category":"Algorithm","draft":false}}},{"node":{"excerpt":"퀵 정렬이란 퀵 정렬은 분할 및 정복 기반 알고리즘이며, 요소를 피벗으로 선택하고 정렬된 배열의 올바른 위치에 피벗을 배치하여 선택된 피벗을 중심으로 주어진 배열을 분할합니다. 퀵 정렬하는 과정을 간단히 정리하면 다음과 같습니다. 분할: 입력 배열을 피벗을 기준을 비균등하게 2개의 부분 배열(피벗보다 작은 요소들, 피벗보다 큰 요소들)로 분할합니다. 정복…","fields":{"slug":"/sort/quickSort/"},"frontmatter":{"date":"July 28, 2023","title":"퀵 정렬","category":"정렬","draft":false}}},{"node":{"excerpt":"병합 정렬이란 병합 정렬은 더 자은 하위 배열로 나누고 각 하위 배열을 정렬한 다음 정렬된 하위 배열을 다시 병합하여 최종 정렬된 배열을 형성하는 정렬 알고리즘입니다. 즉, 분할 정복 방법을 통하여 구현됩니다. 병합 정렬하는 과정을 간단히 정리하면 다음과 같습니다. 분할: 입력 배열을 같은 크기의 2개의 부분 배열로 분할합니다. 정복: 부분 배열을 정렬한…","fields":{"slug":"/sort/mergeSort/"},"frontmatter":{"date":"July 28, 2023","title":"병합 정렬","category":"정렬","draft":false}}},{"node":{"excerpt":"선택 정렬이란 선택 정렬은 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘입니다. 간단하게 말하면 해당 자리를 선택하고 그 자리에 오는 값을 찾는것이라고 생가하면 될 것 같습니다. 선택 정렬하는 과정을 간단히 정리하면 다음과 같습니다. 첫 번쨰 자료를 두 번째 자료 부터 마지막 자료까지 차례대로 비교하여 가장 작은…","fields":{"slug":"/sort/selectionSort/"},"frontmatter":{"date":"July 28, 2023","title":"선택 정렬","category":"정렬","draft":false}}},{"node":{"excerpt":"버블 정렬이란 버블 정렬은 순서가 잘못된 경우 인접한 요소를 반복적으로 교체하는 방식으로 진행되는 알고리즘입니다. 버블 정렬하는 과정을 간단히 정리하면 다음과 같습니다. 첫 번째 자료와 두 번째 자료 비교 두 번째 자료와 세 번째 자료 비교 세 번째 자료와 네 번째 자료 비교 배열의 마지막 요소까지 위 과정을 반복합니다. 가장 처음 1회전 정렬을 수행하고…","fields":{"slug":"/sort/bubbleSort/"},"frontmatter":{"date":"July 28, 2023","title":"버블 정렬","category":"정렬","draft":false}}},{"node":{"excerpt":"삽입 정렬이란 배열의 요소 중에 두 번쨰 자료부터 시작하여 그 앞(왼쪽)의 자료들과 비교하여 삽입할 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘입니다. 삽입 정렬하는 과정을 간단히 정리하면 다음과 같습니다. 두 번째 자료는 첫번째 자료와 비교 세 번째 자료는 두 번째와 첫 번째 자료와 비교 네 번째 자료는 세 번째…","fields":{"slug":"/sort/insertSort/"},"frontmatter":{"date":"July 28, 2023","title":"삽입 정렬","category":"정렬","draft":false}}},{"node":{"excerpt":"문제 설명 두 문자열 s와 p가 주어졌을 때, s에 있는 p의 애너그램의 모든 시작 인덱스의 배열을 반환합니다. 어떤 순서로든 답을 반환할 수 있습니다. 애너그램은 다른 단어 또는 구의 글자를 재배열하여 형성된 단어 또는 구문으로, 일반적으로 원래 글자를 모두 정확히 한 번 사용합니다. 예시 1 예시2 제약 조건:   and  consist of lowe…","fields":{"slug":"/algorithm/leetcode/438/"},"frontmatter":{"date":"July 28, 2023","title":"leetcode - Find All Anagrams in a String","category":"Algorithm","draft":false}}},{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 느린 이미지 로딩 이미지의 사이즈가 클때 다운로드 시간이 오래 걸려서 다운로드가 완료될 때까지 아무것도 뜨지 않는 현상이 발생합니다. 여기서 이미지가 화면에 제때 뜰 수 있도록 미리 다운로드하는 기법인 이미지 사전 로딩 …","fields":{"slug":"/frontendPerformance/imgPreLoading/"},"frontmatter":{"date":"July 27, 2023","title":"이미지 사전 로딩","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 지연 로딩의 단점 일단 먼저 이전에 컴포넌트 지연 로딩 기법을 적용해 보았습니다. 이 기법을 적용하면 최초 페이지를 로드할 때 당장 필요 없는 코드가 포함되지 않아, 로드할 파일의 크기가 작아지고 초기 로딩 속도나 자바스…","fields":{"slug":"/frontendPerformance/componentPreLoading/"},"frontmatter":{"date":"July 27, 2023","title":"컴포넌트 사전 로딩","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 컴포넌트 지연 로딩에 대하여 간략하게 어떤건지 알아보겠습니다. 단일 컴포넌트를 코드 분할을 하여 해당 컴포넌트가 쓰이는 순간에 불러도록 하는 작업입니다. 번들 파일 분석 먼저 컴포넌트 지연 로딩 작업을 진행하기 전에 적용…","fields":{"slug":"/frontendPerformance/componentLazyLoading/"},"frontmatter":{"date":"July 27, 2023","title":"컴포넌트 지연 로딩","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 와 같은 스킬트리는 가능하지만, 나 와 같은 …","fields":{"slug":"/algorithm/programmers/skillTree/"},"frontmatter":{"date":"July 27, 2023","title":"Programmers - 스킬 트리","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 정수 배열이 주어지면 이 배열의 피벗 인덱스를 계산합니다. 피벗 인덱스는 인덱스의 왼쪽에 있는 모든 숫자의 합이 인덱스의 오른쪽에 있는 모든 숫자의 합과 같은 인덱스입니다. 인덱스가 배열의 왼쪽 가장자리에 있으면 왼쪽에 요소가 없으므로 왼쪽 합계는 0입니다. 이는 배열의 오른쪽 가장자리에도 적용됩니다. 가장 왼쪽 피벗 인덱스를 반환합니다. 그러…","fields":{"slug":"/algorithm/leetcode/742/"},"frontmatter":{"date":"July 27, 2023","title":"leetcode - Find Pivot Index","category":"Algorithm","draft":false}}},{"node":{"excerpt":"이번 글에서는 최적화 기법중 애니메이션 최적화가 무엇이고, 어떻게 적용할 수 있는지에 대하여 알아 보겠습니다. 저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 문제의 애니메이션 찾기 일단 최적화를 적용하기전에 어떠한 부분의 애니메이션이 문제가 있는지 살펴보겠습니다. 애…","fields":{"slug":"/frontendPerformance/animationOptimization/"},"frontmatter":{"date":"July 26, 2023","title":"애니메이션 최적화","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"이번글에서는 requestAnimationFrame에 대하여 알아보겠습니다. 프레임 일단 requestAnimationFrame을 알아보기전에 프레임이 어떤것인지부터 살펴보겠습니다. 예를 들어 영화나 애니메이션을 보는 것은 사실 짧은 시간 간격에 이어지는 장면을 보는 것입니다. 이 각각의 장면을 frame이라고 합니다. 즉, 프레임은 한 장의 사진이라 봐…","fields":{"slug":"/yagmyagm/requestAnimationFrame/"},"frontmatter":{"date":"July 26, 2023","title":"requestAnimationFrame은 도대체 어떤것인가?!","category":"야금야금","draft":false}}},{"node":{"excerpt":"문제 설명 게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다. U: 위쪽으로 한 칸 가기 D: 아래쪽으로 한 칸 가기 R: 오른쪽으로 한 칸 가기 L: 왼쪽으로 한 칸 가기 캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아…","fields":{"slug":"/algorithm/programmers/03/"},"frontmatter":{"date":"July 26, 2023","title":"Programmers - 방문 길이","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 인덱스가 0인 정수 배열 num과 정수 피벗이 주어집니다. 다음 조건을 만족하도록 nums를 재배열합니다: 피벗보다 작은 모든 요소가 피벗보다 큰 모든 요소 앞에 나타납니다. 피벗과 같은 모든 요소가 피벗보다 작은 요소와 피벗보다 큰 요소 사이에 나타납니다. 피벗보다 작은 요소와 피벗보다 큰 요소의 상대적 순서가 유지됩니다. 재배치 후 nums…","fields":{"slug":"/algorithm/leetcode/2161/"},"frontmatter":{"date":"July 26, 2023","title":"leetcode - Partition Array According to Given Pivot","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 n명의 사람들이 알 수 없는 수의 그룹으로 나뉘어 있습니다. 각 사람에게는 0에서 n-1까지의 고유 ID가 부여됩니다. 정수 배열 groupSizes가 주어지며, 여기서 groupSizesi는 사람 i가 속해 있는 그룹의 크기입니다. 예를 들어 groupSizes1 = 3이면 사람 1은 크기가 3인 그룹에 속해야 합니다. 각 사람 i가 grou…","fields":{"slug":"/algorithm/leetcode/1282/"},"frontmatter":{"date":"July 25, 2023","title":"leetcode - Group the People Given the Group Size They Belong To","category":"Algorithm","draft":false}}},{"node":{"excerpt":"이번 글에서는 최적화 기법중 텍스트 압축이 무엇이고, 어떻게 적용할 수 있는지에 대하여 알아 보겠습니다. 저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. production 환경과 development 환경 텍스트 압축을 설명하기전에 production 환경과 deve…","fields":{"slug":"/frontendPerformance/text/"},"frontmatter":{"date":"July 25, 2023","title":"텍스트 압축","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"이번 글에서는 코드 분할 그리고 지연 로딩 관련한 최적화 기법에 대하여 설명드리겠습니다. 저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만 알고계서도 좋을것같습니다. 번들 파일 분석 Performance 패널의 검사 내용을 볼때 가장 크고 다운로드가 오래 걸린 자바스크립트 파일이 하나 있습니다. …","fields":{"slug":"/frontendPerformance/codeSplit/"},"frontmatter":{"date":"July 25, 2023","title":"코드 분할 & 지연 로딩","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"이번 글에서는 병목 코드를 어떻게 찾고 해당 코드를 최적화하는 방법에 대하여 알아보겠습니다. 자바스크립트 코드 때문에 서비스가 너무 느리게 다운로드되거나 느리게 실행되는 경우가 있습니다. 이처럼 서비스를 느리게 만드는 코드를 병목 코드라고 합니다. 저는 해당 도서에서 제공해주는 샘플코드를 이용하고 있으므로 샘플코드가 없으신분들은 최적화하는 과정에 대해서만…","fields":{"slug":"/frontendPerformance/bottleneckCodeOptimization/"},"frontmatter":{"date":"July 24, 2023","title":"병목 코드 최적화","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"문제 설명 pointsi = xi, yi가 2D 평면에서 째 점의 좌표인 점 배열이 주어집니다. 여러 점이 동일한 좌표를 가질 수 있습니다. 또한 쿼리 배열 쿼리가 주어지며, 쿼리j = xj, yj, rj는 반지름이 rj인 (xj, yj)에 중심을 둔 원을 설명합니다. 각 쿼리 queriesj에 대해 j번째 원 안에 있는 점의 수를 계산합니다. 원의 경계…","fields":{"slug":"/algorithm/leetcode/1828/"},"frontmatter":{"date":"July 24, 2023","title":"leetcode - Queries on Number of Points Inside a Circle","category":"Algorithm","draft":false}}},{"node":{"excerpt":"타입의 변수에는 무엇이든 지정할 수 있습니다. 타입스크립트 가이드에서는  를 사용하면 타입 제한이 사라지기 때문에 사용을 권장하지 않습니다.  타입의 변수에는 무엇이든 지정할 수 있습니다. 그러면 any 와 unknown의 차이는 무엇일까요? any vs unknown 예를들어 하나의 함수를 작성하겠습니다. callback 매개변수는 어떤 유형이든 가능하…","fields":{"slug":"/yagmyagm/anyUnknown/"},"frontmatter":{"date":"July 22, 2023","title":"Typescript - any vs unknown","category":"야금야금","draft":false}}},{"node":{"excerpt":"비효율적인 이미지 분석 해당 분석하고자 하는 웹사이트를 Lighthouse 를 통해 분석합니다. 그리고 분석 결과에서 Opportunities 섹션의 ‘Properly size images’ 항목을 주목합니다. 이 항목은 이미지를 적절한 사이즈를 사용하도록 제안합니다. 해당 항목을 펼쳐서 내용을 살펴보면 어떤 이미지가 적절한지 않은 사이즈인지 리스트로 보…","fields":{"slug":"/frontendPerformance/imageOptimization/"},"frontmatter":{"date":"July 22, 2023","title":"이미지 최적화","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"최적화 기법 종류 최적화 기법에는 이미지 사이즈 최적화, 코드 분할, 텍스트 압축, 병목 코드 최적화가 있습니다. 각 최적화 기법에 대하여 설명드리겠습니다.  이미지 사이즈 최적화 웹 서비스에서는 매우 다양한 이미지를 사용합니다. 하지만 너무 큰 사이즈의 이미지를 무분별하게 사용하면 네트워크 트래픽이 증가해 서비스 로딩이 오래 걸립니다. 그렇다고 이미지 …","fields":{"slug":"/frontendPerformance/optimizationAndTools/"},"frontmatter":{"date":"July 22, 2023","title":"최적화 기법 종류와 Lighthouse 툴","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"프론트엔드라는 개발 분야가 등장한지 오랜 시간이 지났고, 그 후 굉장히 빠르게 발전하고 있습니다. 지금까지는 사람들은 새로운 기술이 나오는데 주목했다면 최근에는 성능 최적화라는 주제에 관심을 갖기 시작했습니다. 성능이 저하되면 사용자가 떠나고 매출이 감소한다. 위 문장을 다르게 해석한다면 성능이 향상되면 그만큼 사용자가 늘고 매출이 오른다는 뜻입니다. 이…","fields":{"slug":"/frontendPerformance/whyPerformance/"},"frontmatter":{"date":"July 22, 2023","title":"성능 최적화는 왜 필요할까?","category":"프론트엔드 성능 최적화 가이드[도서]","draft":false}}},{"node":{"excerpt":"이 글은 스크립트 태그에 대하여 최적화하는 방법에 대하여 설명합니다. async 및 defer는 모두 HTML의 스크립트 태그에 대한 속성으로, 이를 통해 외부 javascript를 로드하는 방법을 지정할 수 있습니다. async, defer 를 사용하는 이유?! DOM 요소 접근 불가 위 코드에서 h1태그를 사용할 수 있기 전에 javascript를 실…","fields":{"slug":"/yagmyagm/script/"},"frontmatter":{"date":"July 22, 2023","title":"async vs defer (script)","category":"야금야금","draft":false}}},{"node":{"excerpt":"링크드 리스트는 데이터를 일직선으로 나영한 형태를 가지고 있습니다. 데이터 추가나 삭제는 쉽지만, 원하는 데이터에 접근하려면 시간이 많이 걸립니다. 배열 vs 링크드리스트 배열은 메모리 상에서 연속적인 공간을 할당받아 데이터를 저장한다. 배열에서는 데이터를 접근할때 인덱스(index)라는 데이터의 주소를 가리키는 식별자를 통해 빠르게 특정 데이터에 접근할…","fields":{"slug":"/yagmyagm/linkedList/"},"frontmatter":{"date":"July 21, 2023","title":"연결 리스트","category":"야금야금","draft":false}}},{"node":{"excerpt":"문제 설명 A 나라가 B 나라를 침공하였습니다. B 나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A 나라는 B 나라의 아이기스 군사 기지에 융단폭격을 가했습니다.\nA 나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을 자랑하는 요격 시스템이 있지만 운용 비용이 …","fields":{"slug":"/algorithm/programmers/02/"},"frontmatter":{"date":"July 19, 2023","title":"Programmers - 요격 시스템","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 “c를 2진법으로 표현한 문자열”로 바꿉니다. 예를 들어, 이라면, x에 이진 변환을 가하면  이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 “1”이 될 때까지 계속해서 s에 이…","fields":{"slug":"/algorithm/programmers/01/"},"frontmatter":{"date":"July 19, 2023","title":"Programmers 이진 변환 반복하기","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 A를 N개의 정수로 구성된 비어 있지 않은 배열이라고 가정합니다. 한 쌍의 인덱스(P, Q)에 대한 둘의 내적합은 0 ≤ P ≤ Q < N에 대해 절대값 |AP + AQ|입니다. 예를 들어, 다음 배열 A: 에는 (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)의 인덱스 쌍이 있습니다. (0, 0) 쌍에 대한 …","fields":{"slug":"/algorithm/codility/lesson15/ 37-minAbsSumOfTwo/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 15 - MinAbsSumOfTwo","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 배열 A가 주어집니다. 삼중항(P, Q, R)은 변의 길이가 AP, AQ, AR인 삼각형을 만들 수 있다면 삼각형입니다. 즉, 삼중항(P, Q, R)은 0 ≤ P < Q < R < N이면 삼각형입니다: 예를 들어 다음과 같은 배열 A를 생각해 봅시다: 이 배열의 요소로 구성할 수 있는 삼각형 삼중항은 (0, 2, 4), (…","fields":{"slug":"/algorithm/codility/lesson15/ 36-countTriangles/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 15 - CountTriangles","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 정수 M과 음수가 아닌 정수 N으로 구성된 비어 있지 않은 배열 A가 주어집니다. 배열 A의 모든 정수는 M보다 작거나 같습니다. 0 ≤ P ≤ Q < N인 한 쌍의 정수(P, Q)를 배열 A의 슬라이스라고 하며, 이 슬라이스는 AP, AP + 1, …, AQ 요소로 구성됩니다. 고유 슬라이스는 고유 번호로만 구성된 슬라이스입니다. 즉, 슬라이…","fields":{"slug":"/algorithm/codility/lesson15/ 35-countDistinctSlices/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 15 - CountDistinctSlices","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 숫자로 구성된 비어 있지 않은 배열 A가 주어집니다. 배열은 내림차순이 아닌 순서로 정렬됩니다. 이 배열의 절대 고유 개수는 배열의 요소 중 고유한 절대 값의 수입니다. 예를 들어 배열 A가 다음과 같다고 가정해 보겠습니다: 이 배열의 요소에는 0, 1, 3, 5, 6의 5개의 고유 절대값이 있으므로 이 배열의 절대 고유 개수는 5입니다…","fields":{"slug":"/algorithm/codility/lesson15/ 34-absDistinct/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 15 - AbsDistinct","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 정수 K, M과 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 배열의 모든 요소는 M보다 크지 않습니다. 이 배열을 연속된 요소로 구성된 K 블록으로 나누어야 합니다. 블록의 크기는 0에서 N 사이의 정수이며, 배열의 모든 요소는 어떤 블록에 속해야 합니다. X에서 Y까지의 블록의 합은 AX + AX + 1 + … + AY와 같습…","fields":{"slug":"/algorithm/codility/lesson14/ 33-minMaxDivision/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 14 - MinMaxDivision","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 두 개의 양의 정수 N과 M이 주어집니다. 정수 N은 0에서 N-1까지 번호가 매겨진 원 안에 배열된 초콜릿의 개수를 나타냅니다. 당신은 초콜릿을 먹기 시작합니다. 초콜릿을 먹은 후 포장지만 남깁니다. 0번 초콜릿부터 먹기 시작합니다. 그런 다음 원 안에 있는 다음 M-1개의 초콜릿 또는 포장지를 생략하고 다음 초콜릿을 먹습니다. 더 정확하게 …","fields":{"slug":"/algorithm/codility/lesson12/ 32-chocolatesByNumbers/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 12 - ChocolatesByNumbers","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 소수는 정확히 두 개의 나눗셈이 있는 양의 정수 X입니다: 1과 X. 처음 몇 개의 소수는 2, 3, 5, 7, 11, 13입니다. 준소수는 두 개의 (반드시 구별되는 것은 아닌) 소수의 곱인 자연수입니다. 처음 몇 개의 준소수는 4, 6, 9, 10, 14, 15, 21, 22, 25, 26입니다. 비어 있지 않은 두 개의 배열 P와 Q가 주…","fields":{"slug":"/algorithm/codility/lesson11/ 31-countSemiprimes/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 11 - CountSemiprimes","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 배열 A가 주어집니다. 0 ≤ i < N인 각 숫자 Ai에 대해 Ai의 나눗셈이 아닌 배열의 원소 수를 세고 싶습니다. 이러한 원소를 제수가 아닌 원소라고 합니다. 예를 들어 정수 N = 5와 배열 A를 생각해 봅시다: 다음 요소의 경우: A0 = 3, 제수가 아닌 요소는 다음과 같습니다: 2, 6, A1 = 1인 경우, …","fields":{"slug":"/algorithm/codility/lesson11/ 30-countNonDivisible/"},"frontmatter":{"date":"July 18, 2023","title":"Codility Lesson 11 - CountNonDivisible","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 피크는 이웃 요소보다 큰 배열 요소입니다. 더 정확하게는 0 < P < N - 1, AP - 1 < AP > AP + 1이 되는 인덱스 P입니다. 예를 들어, 다음 배열 A: 에는 정확히 4개의 피크가 있습니다: 요소 1, 3, 5, 10. 아래 그림과 같이 상대적인 높이가 배열 A로…","fields":{"slug":"/algorithm/codility/lesson10/ 29-flags/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 10 - Flags","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 어떤 직사각형의 면적을 나타내는 정수 N이 주어집니다. 변의 길이가 A와 B인 직사각형의 넓이는 A * B이고 둘레는 2 * (A + B)입니다. 이 사각형의 변은 정수여야 하며, 면적이 N과 같은 직사각형의 최소 둘레를 구하는 것이 목표입니다. 예를 들어 정수 N = 30이 주어지면 면적 30의 직사각형이 있습니다: (1, 30), 둘레 62…","fields":{"slug":"/algorithm/codility/lesson10/ 28-minPerimeterRectangle/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 10 - MinPerimeterRectangle","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N = D * M이 되는 정수 M이 존재하는 경우 양의 정수 D는 양의 정수 N의 인수입니다. 예를 들어, M = 4는 위의 조건(24 = 6 * 4)을 만족하므로 6은 24의 인수입니다. 함수를 작성합니다: 양수 N이 주어지면 그 요소의 개수를 반환하는 함수를 작성합니다. 예를 들어 N = 24가 주어지면 24에는 1, 2, 3, 4, 6, …","fields":{"slug":"/algorithm/codility/lesson10/ 27-countFactors/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 10 - CountFactors","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 0 ≤ X < Y < Z < N이 되는 삼중항(X, Y, Z)을 이중 슬라이스라고 합니다. 이중 슬라이스(X, Y, Z)의 합은 AX + 1 + AX + 2 + … + AY - 1 + AY + 1 + AY + 2 + … + AZ - 1입니다. 예를 들어, 배열 A는 다음과 같습니다: …","fields":{"slug":"/algorithm/codility/lesson9/ 26-maxDoubleSliceSum/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 9 - MaxDoubleSliceSum","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 0 ≤ P ≤ Q < N인 한 쌍의 정수(P, Q)를 배열 A의 슬라이스라고 하며, 한 슬라이스(P, Q)의 합은 AP + AP+1 + … + AQ의 총합입니다. + AQ입니다. 함수를 작성합니다: 이 함수는 N개의 정수로 구성된 배열 A가 주어졌을 때 A의 모든 슬라이스의 최대 합을…","fields":{"slug":"/algorithm/codility/lesson9/ 25-maxSliceSum/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 9 - MaxSliceSum","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 배열 A가 주어집니다. 여기에는 연속된 N일 동안의 주식 일별 가격이 포함되어 있습니다. 단일 주식을 P일에 매수하고 Q일에 매도한 경우, 여기서 0 ≤ P ≤ Q < N이면 해당 거래의 수익은 AQ ≥ AP인 경우 AQ - AP와 같습니다. 그렇지 않으면 거래는 AP - AQ의 손실을 가져옵니다. 예를 들어 다음과 같은 …","fields":{"slug":"/algorithm/codility/lesson9/ 24-maxProfit/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 9 - MaxProfit","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 이 배열의 리더는 A의 요소 중 절반 이상에서 발생하는 값입니다. 이퀘이 리더는 0 ≤ S < N - 1이고 두 시퀀스 A0, A1, …, AS와 AS + 1, AS + 2, …, AN - 1이 같은 값의 리더를 갖는 인덱스 S입니다. 예를 들어 다음과 같은 배열 A가 주어집니다: 두…","fields":{"slug":"/algorithm/codility/lesson8/ 23-equiLeader/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 8 - EquiLeader","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 배열 A가 주어집니다. 배열 A의 지배자는 A의 요소 중 절반 이상에서 발생하는 값입니다. 예를 들어 배열 A가 다음과 같다고 가정해 보겠습니다. A의 8개의 요소 중 5개(즉, 인덱스가 0, 2, 4, 6, 7인 요소)에서 발생하고 5가 8의 절반 이상이기 때문에 A의 도미네이터는 3입니다. 함수 작성 이 함수는 N개의 …","fields":{"slug":"/algorithm/codility/lesson8/ 22-dominator/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 8 - Dominator","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 돌담을 만들려고 합니다. 벽은 직선이고 길이가 N미터여야 하며 두께는 일정해야 하지만 장소에 따라 높이가 달라야 합니다. 벽의 높이는 N개의 양의 정수로 구성된 배열 H로 지정됩니다. HI는 I에서 왼쪽 끝의 오른쪽으로 I+1미터까지 벽의 높이입니다. 특히 H0은 벽의 왼쪽 끝의 높이이고 HN-1은 벽의 오른쪽 끝의 높이입니다. 벽은 직육면체 …","fields":{"slug":"/algorithm/codility/lesson7/ 21-stoneWall/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 7 - StoneWall","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 문자로 구성된 문자열 S가 다음과 같은 경우 올바르게 중첩된 문자열이라고 합니다: S가 비어 있는 경우; S의 형식이 “(U)“인 경우, 여기서 U는 올바르게 중첩된 문자열입니다; S의 형식이 “VW”이고 V와 W가 올바르게 중첩된 문자열인 경우. 예를 들어 문자열 ”( ( ( ) ( ( ) ) ( ) )“는 올바르게 중첩되지만 문자열 …","fields":{"slug":"/algorithm/codility/lesson7/ 20-nesting/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 7 - Nesting","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 두 개의 배열 A와 B가 주어집니다. 배열 A와 B는 강에 있는 탐욕스러운 물고기 N마리를 나타내며, 강의 흐름을 따라 하류로 정렬되어 있습니다.   물고기의 번호는 0부터 N-1까지입니다. P와 Q가 두 물고기이고 P < Q인 경우, 물고기 P는 처음에 물고기 Q의 상류에 있습니다. 처음에는 각 물고기의 …","fields":{"slug":"/algorithm/codility/lesson7/ 19-fish/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 7 - Fish","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 다음 조건 중 하나라도 해당하면 N개의 문자로 구성된 문자열 S가 올바르게 중첩된 것으로 간주됩니다: S가 비어 있습니다; S의 형식이 “(U)” 또는 ”U” 또는 “{U}“인 경우, 여기서 U는 올바르게 중첩된 문자열입니다; S의 형식이 “VW”이고 V와 W가 올바르게 중첩된 문자열인 경우. 예를 들어 문자열 “{  ( ( ) ( )  }“는…","fields":{"slug":"/algorithm/codility/lesson7/ 18-brackets/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 7 - Brackets","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 평면에 N개의 원판을 그립니다. 원판의 번호는 0부터 N-1까지입니다. 원반의 반지름을 지정하는 음수가 아닌 정수 N개의 배열 A가 주어집니다. J번째 원반은 중심이 (J, 0)이고 반지름이 AJ인 원반을 그립니다. J ≠ K이고 J 번째 원판과 K 번째 원판에 공통점이 하나 이상 있는 경우 J 번째 원판과 K 번째 원판이 교차한다고 합니다(원…","fields":{"slug":"/algorithm/codility/lesson6/17-numberOfDiscIntersections/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 6 - NumberOfDiscIntersections","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 배열 A가 주어집니다. 삼항식(P, Q, R)은 0 ≤ P < Q < R < N이면 삼각형입니다: 예를 들어 다음과 같은 배열 A를 생각해 봅시다: 삼항(0, 2, 4)은 삼각형입니다. 함수를 작성합니다: 이 함수는 N개의 정수로 구성된 배열 A가 주어졌을 때, 이 배열에 대한 삼각형 삼중항이 존재하면 1을 반환하고 그렇지…","fields":{"slug":"/algorithm/codility/lesson6/16-triangle/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 6 - Triangle","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 삼중항(P, Q, R)의 곱은 AP _ AQ _ AR과 같습니다. 예를 들어, 배열 A는 다음과 같습니다: 에는 다음과 같은 예제 삼중 항이 포함되어 있습니다: 목표는 모든 삼항식의 최대 곱을 찾는 것입니다. 함수를 작성합니다: 비어 있지 않은 배열 A가 주어지면 모든 삼항식의 최대 …","fields":{"slug":"/algorithm/codility/lesson6/15-maxProductOfThree/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 6 - MaxProductOfThree","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 함수 작성 이 함수는 N개의 정수로 구성된 배열 A가 주어졌을 때 배열 A의 고유값 개수를 반환합니다. 예를 들어, 6개의 요소로 구성된 배열 A가 주어지면 다음과 같습니다: 배열 A에는 1, 2, 3 등 3개의 고유한 값이 나타나므로 함수는 3을 반환해야 합니다. 다음 가정에 대한 효율적인 알고리즘을 작성합니다: N은 0..100,000 범위…","fields":{"slug":"/algorithm/codility/lesson6/14-distinct/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 6 - Distinct","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 0 ≤ P < Q < N이 되는 한 쌍의 정수(P, Q)를 배열 A의 슬라이스라고 합니다(슬라이스에는 적어도 두 개의 요소가 포함되어 있음에 유의하세요). 슬라이스(P, Q)의 평균은 AP + AP + 1+ … + AQ를 슬라이스의 길이로 나눈 값입니다. 정확히 말하면, 평균은 (AP…","fields":{"slug":"/algorithm/codility/lesson5/13-minAvgTwoSlice/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 5 - MinAvgTwoSlice","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 DNA 염기서열은 염기서열의 연속되는 뉴클레오타이드의 유형에 해당하는 문자 A, C, G, T로 구성된 문자열로 나타낼 수 있습니다. 각 뉴클레오타이드에는 정수인 임팩트 팩터가 있습니다. A, C, G, T 유형의 뉴클레오타이드는 각각 1, 2, 3, 4의 영향 계수를 가집니다. 이 형식의 몇 가지 질문에 답하게 될 것입니다: 주어진 DNA 서…","fields":{"slug":"/algorithm/codility/lesson5/12-genomicRangeQuery/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 5 - GenomicRangeQuery","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 함수를 작성합니다: 세 개의 정수 A, B, K가 주어졌을 때 A..B 범위 내에서 K로 나눌 수 있는 정수의 개수를 반환하는 함수입니다: 예를 들어 6..11 범위 내에 2로 나눌 수 있는 숫자는 6, 8, 10 등 세 개이므로 함수는 3을 반환해야 합니다. 다음 가정에 대한 효율적인 알고리즘을 작성하십시오: A와 B는 0..2,000,000…","fields":{"slug":"/algorithm/codility/lesson5/11-countDiv/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 5 - CountDiv","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어있지 않은 배열 A가 주어집니다. 배열 A의 연속된 요소는 도로 위의 연속된 자동차를 나타냅니다. 배열 A에는 0 및/또는 1만 포함됩니다: 0은 동쪽으로 이동하는 자동차를 나타냅니다, 1은 서쪽으로 이동하는 자동차를 나타냅니다. 목표는 지나가는 자동차를 세는 것입니다. 0 ≤ P < Q < N인 한 쌍의 자동차(P, …","fields":{"slug":"/algorithm/codility/lesson5/10-passingCars/"},"frontmatter":{"date":"July 17, 2023","title":"Codility Lesson 5 - PassingCars","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 함수를 작성합니다: N개의 정수로 구성된 배열 A가 주어졌을 때 A에 존재하지 않는 가장 작은 양의 정수(0보다 큰 정수)를 반환하는 함수입니다. 예를 들어 다음 가정에 대한 효율적인 알고리즘을 작성하십시오: N은 1..100,000 범위 내의 정수입니다; 배열 A의 각 요소는 -1,000,000..1,000,000 범위 내의 정수입니다. 문제…","fields":{"slug":"/algorithm/codility/lesson4/09-missingInteger/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 4 - MissingInteger","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 처음에는 0으로 설정된 N개의 카운터가 주어지며, 이 카운터에는 두 가지 가능한 연산이 있습니다: 증가(X) - 카운터 X가 1씩 증가합니다, 최대 카운터 - 모든 카운터가 모든 카운터의 최대값으로 설정됩니다. 비어 있지 않은 M개의 정수로 구성된 배열 A가 주어집니다. 이 배열은 연속 연산을 나타냅니다: AK = X, 즉 1 ≤ X ≤ N이면…","fields":{"slug":"/algorithm/codility/lesson4/08-maxCounters/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 4 - MaxCounters","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 순열은 1부터 N까지의 각 원소를 한 번씩만 포함하는 시퀀스입니다. 예를 들어 배열 A는 다음과 같습니다: 는 순열이지만 배열 A는 다음과 같습니다: 는 값 2가 누락되었으므로 순열이 아닙니다. 목표는 배열 A가 순열인지 확인하는 것입니다. 함수를 작성합니다: 배열 A가 주어졌을 때 …","fields":{"slug":"/algorithm/codility/lesson4/07-permCheck/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 4 - PermCheck","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 작은 개구리가 강 반대편으로 가고 싶어 합니다. 개구리는 처음에 강의 한쪽 강둑(위치 0)에 있으며 반대쪽 강둑(위치 X+1)으로 가고 싶어 합니다. 나무에서 나뭇잎이 강 표면으로 떨어집니다. 떨어지는 나뭇잎을 나타내는 N개의 정수로 구성된 배열 A가 주어집니다. AK는 시간 K에 나뭇잎 하나가 떨어지는 위치를 초 단위로 측정합니다. 개구리가 …","fields":{"slug":"/algorithm/codility/lesson4/06-frogRiverOne/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 4 - FrogRiverOne","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 배열 A는 테이프에 있는 숫자를 나타냅니다. 0 < P < N이 되는 정수 P는 이 테이프를 비어 있지 않은 두 부분으로 나눕니다. A0, A1, …, AP - 1 및 AP, AP + 1, …, AN - 1. 두 부분의 차이는 다음의 값입니다: |(a0 + a1 + … + ap - 1…","fields":{"slug":"/algorithm/codility/lesson3/05-tapeEquilibrium/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 3 - TapeEquilibrium","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 서로 다른 N개의 정수로 구성된 배열 A가 주어집니다. 배열에는 1…(N + 1) 범위의 정수가 포함되며, 이는 정확히 하나의 요소가 누락되었음을 의미합니다. 여러분의 목표는 그 누락된 요소를 찾는 것입니다. 함수를 작성합니다: 배열 A가 주어지면 누락된 요소의 값을 반환하는 함수를 작성합니다. 예를 들어 배열 A가 주어졌을 때 인 경우 함수는…","fields":{"slug":"/algorithm/codility/lesson3/04-permMissingElem/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 3 - PermMissingElem","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 작은 개구리가 길 반대편으로 가고 싶어 합니다. 개구리는 현재 X 위치에 있으며 Y보다 크거나 같은 위치로 이동하려고 합니다. 작은 개구리는 항상 고정된 거리인 D를 점프합니다. 작은 개구리가 목표에 도달하기 위해 점프해야 하는 최소한의 횟수를 세십시오. 함수를 작성합니다: 세 개의 정수 X, Y, D가 주어졌을 때 X 위치에서 Y보다 큰 위치…","fields":{"slug":"/algorithm/codility/lesson3/03-frogJmp/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 3 - FrogJmp","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 배열은 홀수 개의 요소를 포함하며, 배열의 각 요소는 짝을 이루지 않은 한 요소를 제외하고 같은 값을 가진 다른 요소와 짝을 이룰 수 있습니다. 예를 들어 배열 A에서 인덱스 0과 2의 요소는 값 9를 가집니다, 인덱스 1과 3의 요소는 값 3을 가집니다, 인덱스 4와 6의 요소는 값…","fields":{"slug":"/algorithm/codility/lesson2/02-oddOccurrencesInArray/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 2 - OddOccurrencesInArray","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 N개의 정수로 구성된 배열 A가 주어집니다. 배열의 회전은 각 요소가 하나의 인덱스만큼 오른쪽으로 이동하고 배열의 마지막 요소가 첫 번째 위치로 이동하는 것을 의미합니다. 예를 들어 배열 A = 3, 8, 9, 7, 6의 회전은 6, 3, 8, 9, 7입니다(요소가 인덱스 하나씩 오른쪽으로 이동하고 6이 첫 번째 위치로 이동). 목표는 배열 A…","fields":{"slug":"/algorithm/codility/lesson2/02-cyclicRotation/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 2 - CyclicRotation","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 양수 N 내의 이진 갭은 N의 이진 표현에서 양쪽 끝이 1로 둘러싸인 연속된 0의 최대 시퀀스입니다. 예를 들어, 숫자 9는 이진 표현 1001을 가지며 길이 2의 이진 간격을 포함합니다. 숫자 529는 이진 표현 1000010001을 가지며 길이 4와 길이 3의 두 이진 간격을 포함합니다. 숫자 20은 이진 표현 10100을 가지며 길이 1의…","fields":{"slug":"/algorithm/hackerRank/01-binarygap/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 1 - BinaryGap","category":"Algorithm","draft":false}}},{"node":{"excerpt":"문제 설명 양수 N 내의 이진 갭은 N의 이진 표현에서 양쪽 끝이 1로 둘러싸인 연속된 0의 최대 시퀀스입니다. 예를 들어, 숫자 9는 이진 표현 1001을 가지며 길이 2의 이진 간격을 포함합니다. 숫자 529는 이진 표현 1000010001을 가지며 길이 4와 길이 3의 두 이진 간격을 포함합니다. 숫자 20은 이진 표현 10100을 가지며 길이 1의…","fields":{"slug":"/algorithm/codility/lesson1/01-binarygap/"},"frontmatter":{"date":"July 16, 2023","title":"Codility Lesson 1 - BinaryGap","category":"Algorithm","draft":false}}}]}},"pageContext":{}}}