category개발노트JavaScript

  1. Codility Lesson 4 — MissingInteger
    📆📂개발노트JavaScript

    Task description 주어진 수열에서 누락된 가장 작은 양의 정수 찾기 주어진 배열은 중복이 가능하고 음수도 포함되어 있다. How I did solve 전에는 양의 정수, 고유값들로 주어진 순열 중 누락분을 구하는 문제였어서 합을 통해 풀었으나, 이번에는 일단 중복이 발생되어 있고 음수도 끼어 있어서 hashmap을 이용해서 풀어보기로 했고 의외로 금방 풀어냈음. Solved Code function solution(A) { const hashMap = {}; A = A.sort( (a,b) => a -

  2. Codility Lesson 4 — MaxCounters
    📆📂개발노트JavaScript

    Task description 정수 N과 1 ~ N + 1까지의 값을 원소로 가지는 배열 A가 주어짐 배열 A를 순회하면서 해당 값들이 나오는 수를 카운트 배열 A를 순회하는 중에 발견된 값이 N + 1일 경우 모든 값에 대한 카운트를 가장 높은 카운트 수로 일괄 변경 즉, N = 5 A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4 이러한 N과 A 배열이 주어졌다면, A[2]까지 순회 했을 때 3은 1번, 4는 2번 카운트 되었으므로 (0, 0, 1, 2,

  3. Codility Lesson 4 — FrogRiverOne
    📆📂개발노트JavaScript

    Task description 시간별 개구리의 위치 정보를 담고있는 배열 A(배열 인덱스가 초단위 시간, 값이 위치), 강의 끝 위치 X가 주어졌을 때 모든 위치를 거치게되는 가장 빠른 시간 찾기 모든 위치를 거치지 못한다면 -1을 반환 How I did solve 각 위치당 시간 정보를 가진 새로운 배열이 필요 각 위치를 배열의 index로 사용 X 길이 만큼의 배열 생성 각 위치에 시간 기록 이미 기록된 위치에는 재작성하지 않아야 함 배열에 모든 요소가 값이 있다면 가장 높은 값을 반환 그렇지 않으면 -1 반환

  4. Codility Lesson — PermCheck
    📆📂개발노트JavaScript

    Task description 주어진 배열이 순열이면 1 그렇지 않으면 0을 반환 How I did solve 순열이라면, 1 + (N), 2 + (N-1), 3 + (N-2)이 모두 같은 값을 가질 것으로 가정 주어진 배열을 오름차순으로 정렬 후, 순차적으로 더한 값을 비교해가면 누락된 숫자가 있는 경우 해당 합에서 차이가 발생할 것이므로 O(n/2)로 해결 가능할 것으로 추측 Solved Code function solution(A) { const arr = A.sort( (a, b) => a - b )

  5. Codility Lesson 3 — tapeEquilibrium
    📆📂개발노트JavaScript

    Task description |(A[0] + … + A[P-1]) - (A[P] + … + A[N-1])| 최소값 찾기 How I did solve 배열의 전체 합 sumOfTatal을 구함 A의 요소를 탐색해가며 탐색한 요소들의 합을 구하면 A[0] + … + A[P-1] 탐색한 요소들의 합을 전체 합에서 빼면 A[P] + … + A[N−1] 둘의 차이 중 최소값을 반환 Solved Code function solution(A) { const sumOfTotal = A.reduce( (acc, entry)

  6. Codility Lesson 3 — PermMissingElm
    📆📂개발노트JavaScript

    Task description 주어진 순열에서 누락된 요소 찾기 How I did solve 1 ~ (N + 1) 까지의 순열이 있다고 할 때, 단 1개의 요소만이 누락되어 있다면 누락되지 않은 순열의 합과 현재 순열의 합의 차이가 곧 누락된 요소 1 ~ N 까지의 합 (1 + N) * N / 2 1 ~ (N+1)까지의 합 (2 + N) * (N + 1) / 2 Solved Code function solution(A) { let sumNonMissing = (A.length + 2) * (A.length +

  7. Codility Lesson 3 — FrogJump
    📆📂개발노트JavaScript

    Task description 위치 X에서 Y까지 최소 점프 횟수를 계산합니다. How I did solve position X에서 position Y로 이동하는데 한 번에 D 만큼 이동한다면, 총 이동거리 (Y - X) = n * 1회 이동거리(D) 소수점은 1회 이동을 해야 하므로 올림 처리 Solved Code function solution(X, Y, D) { return Math.ceil((Y - X) / D) } Retrospective 이 문제는 고민할 필요도 없이 바로 풀이가 도출 됨… 혹시 다른

  8. Codility Lesson 2 — CyclicRotation
    📆📂개발노트JavaScript

    Task description 주어진 수만큼 배열을 오른쪽으로 이동 How I did solve 주어진 값이 A = [3, 8, 9, 7, 6] , K = 3 일 경우 결과는 [9, 7, 6, 3, 8] 즉, 3만큼 오른쪽으로 이동시킬 경우 뒤에서 3개 요소를 앞으로, 나머지를 그 뒤에 나열시키는 새로운 배열 반환. 이를 위해서는 array.length - 3부터 마지막 요소까지를 slice ,나머지를 slice slice된 배열을 접합 K가 배열 길이를 넘어설 경우 n회의 cycle을 돌아 제자리가 되므로 K를

  9. Codility Lesson 2 — OddOccurrencesInArray
    📆📂개발노트JavaScript

    Task description 주어진 홀수 개의 요소를 가진 배열에서 짝을 이루지 않은 한 요소의 값 구하기 How I did solve 배열 내 모든 요소에 대해 XOR 연산 Solved Code function solution(A) { return A.reduce( ( acc, entry) => acc^entry, 0 ); } Retrospective 이 부분은 얼마 전에 이미 비트 연산으로 같은 값을 XOR 연산하면 0이 된다는 사실을 보았기 때문에, 아직 기억 속에 머물러 있어서 큰 고민 없이 풀었을 뿐이라 만일 비트

  10. Codility Lesson 1 — BinaryGap
    📆📂개발노트JavaScript

    Task 주어진 정수의 2진 표현에서 가장 긴 zero sequence 구하기. How I did solve binary 변환 주어진 정수를 2로 나누어 나눈 나머지를 뒤에서부터 채움 몫을 다시 2로 나눈 나머지를 그 다음에 채움 몫이 0이 될 때까지 반복 => 재귀 함수 이용 zero gap 구하기 binary를 문자열로 받아서 trailing zero 제거 : 정규식 이용 1로 split하여 zero gap 배열을 취하고 이를 오름차순 정렬 배열의 마지막 요소의 길이를 반환 배열의 마지막 요소가 없을 경우 0 반환