ALL

    [알고리즘] 부분 수열의 합 2

    문제 N개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속부분수열의 합이 특정숫자 M이하가 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요. 만약 N=5, M=5이고 수열이 다음과 같다면 1 3 1 2 3 합이 5이하가 되는 연속부분수열은 {1}, {3}, {1}, {2}, {3}, {1, 3}, {3, 1}, {1, 2}, {2, 3}, {1, 3, 1}로 총 10가지입니다. 풀이 function solution(m, arr){ let answer=0; let sum =0; let lt=0; for(let rt=0;rtm) { sum-=arr[lt++]; } //sum>m이 참일 때만 실행. sum에서 현재 lt 값을 빼주고 lt를 증감시킨다. sum>m이 거짓이 될 때까지. answer+..

    [알고리즘]연속 부분 수열 1 - 투포인터 알고리즘

    문제 N개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요. 만약 N=8, M=6이고 수열이 다음과 같다면 1 2 1 3 1 1 1 2 합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다. 입력예제 N=8, M=6 1 2 1 3 1 1 1 2 강사님의 풀이 function solution(m, arr){ let answer = 0; let sum = 0; let left = 0; //left, right 두개의 포인터로 시작, right는 for문 안에서 증감된다. for(let right = 0; right=m){ //sum이 m보다 크거나 같으면, ..

    [알고리즘] 공통원소 구하기 - 투포인터 알고리즘

    문제 A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요. (두 집합의 공통원소를 오름차순 정렬하여 출력합니다.) 입력예제 5 1 3 9 5 2 5 3 2 5 7 8 풀이 function solution2(arr1, arr2) { let answer = []; let n = arr1.length; let m = arr2.length; let p1 = 0; let p2 = 0; arr1.sort((a, b) => a - b); arr2.sort((a, b) => a - b); while (p1 < n && p2 < n) { if (arr1[p1] === arr2[p2]) { answer.push(arr1[p1++]); p2++; } else if (..

    [JS] 전위 연산자, 후위 연산자

    증가/감소(++/--) 연산자는 피연산자를 기준으로 위치에 따라 그 의미가 약간 달라진다. 전위 연산자 증가/감소(++/--) 연산자가 피연산자의 앞에 있으면 이를 전위 연산자 라고 한다. 이 경우 피 연산자의 값을 먼저 증가/감소 시킨 뒤 다른 연산을 수행한다. let x = 5, result; //선증가 후할당 result = ++x; //result == 6, x == 6; //선감소 후할당 result = --x; //result == 5, x == 5; 위 예시에서는 x앞의 전위 증가 연산자(++)가 x = x+1로 증가시켰고, 이 결과값을 result에 할당시켜 두 변수 모두 6의 값을 갖게 되었다. (감소도 마찬가지) 후위 연산자 전위 연산자와 반대로, 먼저 다른 연산을 수행한 후 피연산자의..

    [알고리즘]k번째 큰 수

    문제 현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가 여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요. 만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값은 22입니다. 풀이 function solution(n, k, card) { let answer; let set = new Set(); for (let i = 0; i < n - 2; i++) { for (let j = i + 1; j < n - 1; j++) { for (let s ..

    [알고리즘]졸업선물 - sort 정렬, 완전탐색

    문제 선생님은 올해 졸업하는 반 학생들에게 졸업선물을 주려고 합니다. 학생들에게 인터넷 쇼핑몰에서 각자 원하는 상품을 골라 그 상품의 가격과 배송비를 제출하라고 했습니다. 선생님이 가지고 있는 예산은 한정되어 있습니다. 현재 예산으로 최대 몇 명의 학생에게 선물을 사줄 수 있는지 구하는 프로그램을 작성하세요. 선생님은 상품 하나를 50% 할인해서(반 가격) 살 수 있는 쿠폰을 가지고 있습니다. 배송비는 할인에 포함되지 않습니다. 입력예제 5 28 //학생수 예산 6 6 2 2 4 3 4 5 10 3 풀이 function solution(m, product) { let answer = 0; let n = product.length; product.sort((a, b) => a[0] + a[1] - (b[0..

    [TIL]2022-0203 (THU)

    📖 TIL [알고리즘] [알고리즘]멘토링 - 완전탐색 문제 현수네 반 선생님은 반 학생들의 수학점수를 향상시키기 위해 멘토링 시스템을 만들려고 합니다. 멘토링은 멘토(도와는 학생)와 멘티(도움을 받는 학생)가 한 짝이 되어 멘토가 멘티의 수 friedegg556.tistory.com [NOTE] 오늘은 알고리즘 스터디가 있는 날이었다. 오늘 정리한 알고리즘은 인프런에서 개인적으로 듣고 있는 강의의 내용을 정리한 것이고... 스터디에서 푸는 알고리즘은 단 한 개도 못 풀었다. ㅋㅋ 30분에 1문제가 너무 가혹한 것 같기도 하지만... 1시간이 있었어도 힘들었을 것 같다. 웹 개발 공부를 시작하고 나서 줄곧 느끼는 것이지만 잘하고 싶다고 해서 아무거나 부딪히고, 특히 이해하기 위해 일정 수준 이상의 지식이 ..

    [알고리즘]멘토링 - 완전탐색

    문제 현수네 반 선생님은 반 학생들의 수학점수를 향상시키기 위해 멘토링 시스템을 만들려고 합니다. 멘토링은 멘토(도와는 학생)와 멘티(도움을 받는 학생)가 한 짝이 되어 멘토가 멘티의 수학공부를 도와주는 것입니다. 선생님은 M번의 수학테스트 등수를 가지고 멘토와 멘티를 정합니다. 만약 A학생이 멘토이고, B학생이 멘티가 되는 짝이 되었다면, A학생은 M번의 수학테스트에서 모두 B학생보다 등수가 앞서야 합니다. M번의 수학성적이 주어지면 멘토와 멘티가 되는 짝을 만들 수 있는 경우가 총 몇 가지 인지 출력하는 프로그램을 작성하세요. 입력예제 4 3 //학생수 N, 테스트 횟수 M 3 4 1 2 4 3 2 1 3 1 4 2 풀이 function solution(test) { let answer = 0; le..

    [알고리즘]뒤집은 소수(소수 판별하기)

    문제 n개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하세요. 풀이 function isPrime(num) { if (num === 1) return false; for (let i = 2; i

    [모던 자바스크립트 딥다이브] 4.변수

    변수를 선언하여 메모리에 값을 저장시키고, 변수의 이름 즉, 식별자는 메모리의 위치를 기억한다, 변수를 선언한 후 값을 할당하지 않은 경우, 메모리는 비어있는 것이 아니라 undefined 값이 할당되어 있다. Reference Error : 참조(메모리의 위치를 읽어오는 것) / 선언되지 않은 식별자를 참조했기 때문에 오류가 생기는 것. 변수 호이스팅 : 소스코디 실행 전, 소스코드의 평가 과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문을 먼저 실행한다. 변수 선언문이 코드의 어디에 있든, 상단으로 끌어 올려진 것 처럼 동작하는 것을 '변수 호이스팅' 이라고 하며, 이는 JS 고유의 특징이다. 변수 선언은 메모리를 확보하고 undefined 값을 할당하는 것. 변수 선언은 런타임 이전에 실..