알고리즘, 자료구조/Codility
-
[Python] Codility Lesson1 - BinaryGap알고리즘, 자료구조/Codility 2022. 9. 19. 01:20
문제: https://app.codility.com/programmers/lessons/1-iterations/binary_gap/ 풀이 def solution(N): result = 0 binData = format(N, 'b') gapList = [] for i, v in enumerate(binData): if v == '1': gapList.append(i) if len(gapList) result: result = tmp return result Javascript 풀이: https://..
-
[Javascript] Codility Lesson10 - CountFactors알고리즘, 자료구조/Codility 2022. 8. 20. 19:45
문제: https://app.codility.com/programmers/lessons/10-prime_and_composite_numbers/count_factors/ 문제 요약 N = D * N 이 성립하면 D는 N의 인수다. N이 주어졌을 때 N의 인수 개수를 구하여라 N의 범위는 1 ~ 2,147,483,647이며, N과 D는 자연수이다. 풀이 function solution(N) { let result = 0; const M = Math.sqrt(N); let sqrtInt = Math.floor(M); while (sqrtInt > 0) { let remain = N % sqrtInt; result = remain === 0 ? result + 1 : result; sqrtInt--; }; ..
-
[Javascript] Codility Lesson6 - Triangle알고리즘, 자료구조/Codility 2022. 8. 15. 14:32
문제: https://app.codility.com/programmers/lessons/6-sorting/triangle/ 문제 요약 길이가 N인 배열 A가 주어진다. (P,Q,R)이 0 A[R], A[Q] + A[R] > A[P], A[R] + A[P] > A[Q] 을 충족하면 삼각관계(triangular)라고 한다. 배열 A에서 삼각관계를 충족하는 값들이 있으면 1, 없으면 0을 반환한다. N의 범위는 0 ~ 100,000 이다. 배열 A의 요소 범위는 −2,147,483,648 ~ 2,147,483,647 이다. 풀이 function solution(A) { let result = 0; // 내림차순 정렬 A.sort((a, b) => b - a); for (let i = 0; i < A.lengt..
-
[Javascript] Codility Lesson1 - BinaryGap알고리즘, 자료구조/Codility 2022. 7. 19. 02:22
문제: https://app.codility.com/programmers/lessons/1-iterations/binary_gap/ 문제 요약 양의 정수인 N을 이진수로 나타냈을 때, 양 끝이 1로 이루어진 연속되는 0을 BinaryGap이라 한다. 가장 긴 BinaryGap의 길이를 구하되, BinaryGap이 없으면 0을 리턴한다. 10001001의 가장 긴 BinaryGap은 3이며, 100000인 경우 BinaryGap이 없기 때문에 0을 반환한다. 정수 N의 범위는 1 ~ 2,147,483,647이다. 풀이 function solution(N) { // 정수 N을 이진수로 변환한다 let binaryBit = (N).toString(2); let result = 0; let index = [];..
-
[Javascript] Codility Lesson9 - MaxDoubleSliceSum알고리즘, 자료구조/Codility 2022. 7. 11. 22:21
문제: https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_double_slice_sum/ 문제 요약 길이가 N인 배열 A가 주어지며 N의 범위는 3 ~ 100,000이다. 트리플렛 (X, Y, Z)가 주어지며 (0 ≤ X < Y < Z < N) 이는 A[X + 1] + A[X + 2] + ... + A[Y − 1] + A[Y + 1] + A[Y + 2] + ... + A[Z − 1]를 의미한다. 모든 경우에서 최대합을 구하여라 풀이 function solution(A) { let forward = new Array(A.length).fill(0); let backward = new Array(A.length).fill(0);..
-
[Javascript] Codility Lesson9 - MaxSliceSum알고리즘, 자료구조/Codility 2022. 6. 22. 22:00
문제: https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_slice_sum/ 문제 요약 정수로 구성된 배열 A가 주어졌을 때, 합산 결과가 가장 큰 연속 구간의 합을 구하여라. 풀이 function solution(A) { let maximum = A[0]; // 누적값을 저장할 변수 accum let accum = A[0]; for(let i = 1; i < A.length; i++) { // 누적값과 A[i]의 합이 A[i]보다 작으면 accum을 A[i]로 변경한다 accum = accum + A[i] < A[i] ? A[i] : accum + A[i]; // accum이 maximumq보다 크면 maximum을 acc..
-
[Javascript] Codility Lesson9 - MaxProfit알고리즘, 자료구조/Codility 2022. 6. 21. 21:33
문제: https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_profit/ 문제 요약 N개의 정수를 갖는 배열 A가 주어지며, 각 요소는 주식의 일별 가격을 나타낸다. 주식을 사고 팔았을 때 얻을 수 있는 최대 이익을 반환하고, 만약 이익을 내는 경우가 없다면 0을 반환한다. P는 주식을 산 날, Q는 주식을 판 날이며 0 0 ? profit : 0; return profit; }
-
[Javascript] Codility Lesson 8 - Dominator알고리즘, 자료구조/Codility 2022. 6. 13. 20:13
문제: https://app.codility.com/programmers/lessons/8-leader/dominator/ 문제 요약: N개의 정수로 이루어진 배열 A가 주어진다. N의 범위는 0 ~ 100,000이다. 배열 A의 각 요소의 범위는 -2,147,483,648 ~ 2,147,483,648이다. 배열 A에서 절반 이상을 차지하는 정수(dominator)의 인덱스 중 하나를 반환하여라. 배열 A에서 절반 이상을 차지하는 정수가 없다면 -1을 반환한다. 시도 1: function solution(A) { let stack = []; for (let i = 0; i < A.length; i++) { // stack에 순서대로 정수를 넣고 stack.push(A[i]); // 2개 이상의 정수가 s..