2024/08 21

[프로그래머스] 가까운 수 | JS

문제정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.해결 과정function solution(array, n) { var answer = 0; let minNum = 999; let arrayAgain = array.sort(); for (let i = 0; i Math.abs(n - num)) { minNum = Math.abs(n - num); answer = num; } } return answer;} 가까운 수를 구하는 문제다. 이리저리 문제를 풀 방법을 생각해 봤지만 도무지 아이디어가 안떠올라 라미개발자 영상을 보고 방법을 찾았다.그런데 문제가..

[프로그래머스] 삼각형의 완성조건 (1) | JS

문제선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.해결 과정function solution(sides) { let organizeArray = sides.sort(); for (let i = 0; i organizeArray[2]) { return 1; } return 2; }} 오름차순이라는 힌트를 알기전까지 문제가 안풀려 좌절하고 있었다.구글링을 하기전 질문하기를 통해 오름차순의 힌트를 얻을 수 있..

[프로그래머스] 중복된 문자 제거 | JS

문제문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.해결 과정function solution(my_string) { // (중복된 문자열을 제거한 것을) 결과로 저장할 변수 let result = ''; // my_string 순회하는 루프 for (let i = 0; i  🤔 너무 복잡하게 생각하지 말자!새롭게 알게된 점function solution(my_string) { return [...new Set(my_string)].join('');} ..., new, Set, join의 개념은 봐도봐도 헷갈린다. ... 개념정리  new 개념정리  Set 개념정리..

[알고리즘] 문제 해결 패턴 (4) 분할 정복 패턴

분할 정복 패턴주로 배열이나 문자열 같은 큰 규모의 데이터셋을 처리한다.(연결리스트나 트리가 될 수 있다.) 값을 찾기 위해 배열의 왼쪽에서 시작하여 오른쪽 끝까지 이동하는 것보다는 배열을 작은 조각으로 세분화하여 각 조각들을 어디로 이동시킬지 결정하는 작은 조각으로 세분화하여 각 조각들을 어디로 이동시킬지 결정하는 작업을 하겠다.즉! 큰 데이터 덩어리를 작은 조각으로 나누는것 예시탐색알고리즘의 전형적인 예이다. 이것은 정렬된 숫자를 지닌 배열을 취한다. 배열은 정렬된 상태여야한다. 입력된 search라는 함수는 값을 취하고 해당 값이 있는 위치를 반환시킨다. search([1,2,3,4,5,6],4) // 3 function search(arr, val) { for (let i = 0; i  o(n)..

[알고리즘] 문제 해결 패턴 (3) 기준점 간 이동 배열 패턴

기준점 간 이동 배열 패턴배열이나 문자열과 같은 일련의 데이터를 입력하거나 특정 방식으로 연속적인 해당 데이터의 하위 집합을 찾는 경우에 유용하다.  sliding window 접근법창문을 하나 만들어야 한다. 창문은 단일변수, 하위배열, 또는 필요한 경우 다른 문자열도 될 수 있다. 조건에 따라 창문을 이동시키며, 시작 위치에서 시작하면 보통 왼쪽에서 오른쪽으로 이동한다. 오른쪽에서 왼쪽으로 이동도 가능하고 가운데 위치에서 시작할 수 있다. 그러나 보통 창문을 왼쪽, 즉 요소의 시작 위치 또는 배열이나 문자열의 시작 위치에서 끝나는 위치로 이동한다.  규모가 큰 데이터셋에서 데이터의 하위 집합을 추척하는 문제에 유용하다.예시 문제정수의 배열과 n이라는 수를 받아들이는 maxSubarraySum이라는 함..

[알고리즘] 문제 해결 패턴 (2) 다중 포인터 패턴

다중 포인터 패턴인덱스나 위치에 해당하는 포인터나 값을 다음 특정 조건에 따라 중간 지점에서부터 시작 지점이나 끝 지점이나 양쪽 지점을 향해 이동시키는 것  👉🏻 배열이나 문자열과 같은 일종의 선형 구조나 이중 연결 리스트나 단일 연결 리스트를 만든다.👉🏻 한 쌍의 값이나 조건을 충족시키는 무언가를 찾는다.[-4, -3, -2, -1, 0, 1, 2, 5]"alksjdalksjdlkasjdlks" 참조값이란 인덱스를 가리키는 숫자인 i와 j같은 변수를 의미한다.j와 j를 시작하여 특정방향으로 이동할 수 있게 참조값을 사용하기도 한다. 포인터 변수는 배열이나 문자열의 특정 위치를 가리킨다.(포인터 변수는 두번째도 있으므로 서로를 향해 이동하거나 같은 방향으로 이동하든 끝에서부터 시작위치로 이동하든 ..

[프로그래머스] 컨트롤 제트 🎛️ | JS

문제숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.해결 과정문제가 풀리지 않아 라매개발자 영상을 보며 풀었다. 라매개발자 영상을 보고도 이해가 되지 않아 며칠동안 고민했다. 고민을 해도 이해가 되지 않았다. 그러다 문득 완성된 코드를 먼저 이해해보기로 했다. 그래도 이해가 되지않아. 디버깅을 해보면서 이해를 하니까 코드가 이해가 됐다.function solution(s) { // 현재 숫자를 저장할 빈문자열을 만든다. let currentNumber ..

[알고리즘] 문제 해결 패턴 (1) 빈도수 세기 패턴

빈도수 세기 패턴자바스크립트의 객체를 사용해 다양한 값과 빈도를 수집한다.  이 패턴은알고리즘과 여러 데이터와 입력 값이 서로 비슷한 값으로 구성되어 있는지서로 간의 애니그램인지값이 다른 값에 포함되는지 여부를 비교하거나데이터를 입력값이나 두 개 이상의 빈도 혹은 특정하게 발생하는 빈도와 비교할 때 유용하다. 이를 좋은 접근법이자 패턴으로 만들어주는 것은 중첩된 루프와 관련 있거나 n의 제곱 시간을 사용하는 더 쉬운 해결책과 비교했을 때 n²이라 할 수 있다.관련 문제 예시두 개의 배열을 입력받는 same이라는 함수를 작성하세요. 이 함수는 첫 번째 배열의 각 값이 두 번째 배열에서 제곱된 값으로 존재하는 경우에 true를 반환해야 합니다. 값의 빈도도 동일해야 합니다.same([1,2,3], [4,1,..

[알고리즘] 문제해결접근법

알고리즘이란?특정 작업을 달성하기 위한 과정이나 일련의 단계를 의미 실력 향상 방법문제 해결을 위한 계획 만들기(문제에 접근하는 방법, 문제를 세분화하기 위한 전략)일반적인 문제 패턴을 파악 문제 해결 전략문제 이해문제를 내 방식대로 다시 말할 수 있는가?  문제를 해결하기 위해 어떤 입력이 필요한가?문제를 해결하면 어떤 출력이 나와야 하는가?출력을 입력에서 결정할 수 있는가? 즉, 문제를 해결하기에 충분한 정보가 있는가? (이 질문은 문제를 해결하려는 과정에서야 답할 수 있을 수도 있지만, 지금 이 단계에서 이 질문을 고려하는 것도 여전히 중요하다.)중요한 데이터 요소들을 어떻게 라벨링해야 할까?구체적 예시를 알아보기간단한 예시로 시작더 복잡한 예시들로 진행빈 입력값이 있는 예제를 살펴보는것잘못된 입력..

728x90