ALGORITHM/JavaScript 8

[코딩테스트] 구명 보트

나의 코드function solution(people, limit) { var answer = 0; for (i = 0; i a + num 실패.... 케이스 테스트는 성공했지만, 효율성 검사에서 실패...function solution(people, limit) { var answer = 0; while (people.length > 0) { var num = Math.max(...people); // 가장 무거운 사람 var index = people.indexOf(num); // 해당 사람을 먼저 제거하고 people.splice(index, 1); // 짝이 될 수 있는 사람을 찾아본다 var..

[코딩테스트] 스택/큐 괄호 맞추기

스택에 대해 공부할 때, 스택 관련 문제 예시로 나왔던 괄호 맞추기 문제가 프로그래머스에 있어서 풀어보았다!기존에 풀이 방식을 한 번 봤음에도 불구하고, 막상 코딩 테스트 형식으로 접하니 엄청 쉽게 풀리진 않았다.덕분에 내가 놓치고 있었던 스택의 작동 방식과 예외 케이스 처리의 중요성을 확실히 체감할 수 있었다! 처음 풀어봤던 코드function solution(s){ var answer = true; var arr = []; s = s.split(""); for(i = 0; i 채점 결과정확성: 61.8효율성: 30.5합계: 92.3 / 100.0 처음에는 단순히 여는 괄호는 스택에 넣고, 나머지는 꺼내는 방식으로만 처리했다.근데, 닫힌 괄호가 먼저 오는 경우에 대한 예외..

[코딩테스트] 최댓값과 최솟값

문제 설명문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.제한사항- s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.입출력 예sreturn"1 2 3 4""1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 나의 코드 (메모리 & 시간 & 문제 링크와 같은 자세한 정보는 해당 링크를 통해 확인해 주세요! )function solution(s) { var answer = ""; let numbe..

[코딩테스트] 문자열 섞기

문제 설명길이가 같은 두 문자열 str1과 str2가 주어집니다.두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.제한사항- 1 ≤ str1의 길이 = str2의 길이 ≤ 10 - str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.입출력 예srt1srt2result"aaaaa""bbbbb""ababababab" 나의 코드 (메모리 & 시간 & 문제 링크와 같은 자세한 정보는 해당 링크를 통해 확인해 주세요! )function solution(str1, str2) { var answer = ''; const answerArr = []; const str1Arr = [...str1]; ..

[코딩테스트] 큐 문제 1. 요세푸스 문제

개념정리큐(queue)는 '줄을 서다'라는 뜻을 가지고 있다.먼저 들어간 데이터가 먼저 나오는 구조이기 때문에, 이를 선입선출 또는 FIFO(First In First Out)이라고 부른다. 큐의 기본 동작도 스택과 마찬가지로 삽입 연산을 푸시, 꺼내는 연산을 팝이라고 한다. 큐의 ADT구분정의설명연산boolean isFull()큐에 들어 있는 데이터 개수가 maxsize인지 확인해 boolean 값을 반환합니다.연산boolean isEmpty()큐에 들어 있는 데이터가 하나도 없는지 확인해 boolean 값을 반환합니다.연산void push(ItemType item)큐에 데이터를 푸시합니다.연산ItemType pop()큐에서 처음에 푸시한 데이터를 팝하고, 그 데이터를 반환합니다.상태int front큐..

[코딩테스트] 배열 두 배 만들기

문제 설명정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.제한사항-10,000 ≤ numbers의 원소 ≤ 10,0001 ≤ numbers의 길이 ≤ 1,000입출력 예 numbersresult [1, 2, 3, 4, 5][2, 4, 6, 8, 10][1, 2, 100, -99, 1, 2, 3][2, 4, 200, -198, 2, 4, 6]입출력 예 설명입출력 예 #1[1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.입출력 예 #2[1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2,..

[코딩테스트] 스택 문제 1. 괄호 짝 맞추기

개념 정리프로그래밍에서 스택(Stack)은 말 그대로 데이터를 "쌓는" 자료구조 이다.가장 나중에 넣은 데이터가 가장 먼저 나오는 구조이기 때문에, 이를 후입선출 또는 LIFO(Last In First Out)이라고 부른다. 스택의 기본동작push데이터를 추가pop가장 최근에 추가한 데이터를 제거하고 반환top가장 위의 데이터를 확인 (제거하지 않음)inEmpty스택이 비어 있는지 확인isFull스택이 가득 찼는지 확인 스택의 ADT (추상 자료형)스택은 흔히 ADT로 정의된다.ADT란 인터페이스만 정의되어 있고, 구현은 숨겨진 자료형을 뜻한다.쉽게 말해서, 스택이 어떤 동작을 해야 하는지는 정해져 있지만, 그 구현 방식은 사용자에게 감춰져 있다는 것이다.어떻게 동작해야 하는지의 명세만 제공하고, 실제 ..

[코딩테스트] 01. 배열 정렬하기 (feat. sort() 메서드와 comcompareFunction)

문제정수 배열을 정렬해서 반환하는 solution() 함수를 완성하세요.제약 조건- 정수 배열의 길이는 2 이상 10^5 이하- 정수 배열의 각 데이터 값은 -100,000 이상 100,000 이하입출력의 예입력출력[1, -5, 2, 4, 3][-5, 1, 2, 3, 4]문제 분석하고 풀기문제만 놓고 보면 간단해 보이지만 제약 조건의 데이터의 개수는 최대 10^5이기 때문에, 제한시간이 3초라면 O(N^2) 알고리즘은 사용할 수 없다. 해당 문제를 풀기 위해서는 sort() 메서드를 사용해야 하는데 해당 메서드의 개념부터 잡고가려고 한다!sort() 메서드?JavaScript의 Array.prototype.sort()는 기본적으로 배열 요소를 문자열로 변환해서 정렬한다.[100, 3, 20].sort()..