본문 바로가기

분류 전체보기138

[프로그래머스] 직업군 추천하기 (javascript) 직업군별 선호 언어 문자열 배열(table)과, 내 언어 스택 배열(languages), 선호도(preference)를 입력받아 가장 적합한 직업군을 리턴하는 문제이다. 우선 직업군별 선호 언어 문자열 배열(table)이 별로 아름답지 못하게 입력되어 있기 때문에 갈무리가 필요하다. 추후 직업군별 점수 산출이 필요하기 때문에, 언어별로 어떤 직업군에 몇점인지로 정리했다. tables = ["SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JA.. 2021. 8. 23.
[프로그래머스] 기능개발 (javascript) 풀어보러 가기 : https://programmers.co.kr/learn/courses/30/lessons/42586 완성까지 남은 기간을 담은 배열을 만들고(remains) remains의 반복을 돌면서 앞의 수보다 큰 수가 나오면 세트로 배포되고, 앞의 수보다 작은 수가 나오면 새로운 배포가 된다. [5, 10, 1, 1, 20, 1]=> 5, 10 / 1, 1, 20 / 1 => [2, 2, 1] 이렇게 되어야 하므로 remains[0] = 5 첫 기능은 무조건 먼저 배포되므로 초기값으로 1 추가 answer = [1]; remains[1] = 10 remains[0] < remains[1]이므로 함께 배포됨. answer[마지막요소]++; answer = [2]; remains[2] = 1 re.. 2021. 8. 20.
[프로그래머스] 상호 평가 (javascript) 상호평가 방식으로 점수를 매기는데 자기 자신에게 준 점수가 받은 점수 중 유일한 최고점/최저점이면 제외하고 평균을 계산한다. 학생별로 받은 점수를 쉽게 계산할 수 있도록 배열을 뒤집는다. (뭐.. i번 학생의 점수를 score[0~n][i]로 해도 되긴 하지만..) 그리고 1) 점수가 제외되지 않는 경우 그냥 총합/인원수를 구하면 된다. 2) 점수가 제외되는 경우 (총합-내가 준 점수)/인원수-1 하면 된다. function solution(scores) { var answer = ''; const s = []; // 학생별 점수가 될 수 있도록 배열 뒤집기 for(let i in scores){ for(let j in scores[i]){ if(!s[j]) s.push([]) s[j].push(scor.. 2021. 8. 20.
[프로그래머스] 부족한 금액 계산하기 (javascript) 탈때마다 첫 이용료의 n배가 되는 놀이기구를 count번 탔을 때 얼마가 모자라는지 리턴하는 문제 가우스 공식을 이용하면 된다. 주의할 점은 돈이 충분하다면 0을 리턴해야 한다. function solution(price, money, count) { // price *1 + price *2 + ... price*count // price(1+2+3+...count) // count *(count + 1)/2 * count const budget = count*(count+1)/2 * price; return budget>money ? budget - money : 0; } 풀어보러 가기 : https://programmers.co.kr/learn/courses/30/lessons/82612 2021. 8. 20.
[LeetCode] 55. Jump Game (javascript) 주어진 배열이 있다. 인덱스 0에서 시작하는데, 요소의 숫자만큼 점프를 할 수 있다.(더 짧게 뛰어도 된다.) 이때, 배열의 끝까지 갈 수 있는지 검사하는 문제이다. Input: nums = [2,3,1,1,4] Output: true nums[0]=2에서 두칸, nums[2]=1에서 한칸, nums[3]=1에서 한칸 가면 도착한다. nums[0]=2에서 한칸, nums[1]=3에서 세칸 가면 도착한다. Input: nums = [3,2,1,0,4] Output: false nums[0]=3에서 세칸을 가도, nums[1]=2에서 두칸을 가도, nums[2]=1에서 한칸을 가도 마지막 요소에 도달할 수 없다. 그러므로 false이다. 이 문제를 접했을 때... DFS로 풀어야 하나? 아니면 브루트포스??.. 2021. 8. 20.
[프로그래머스] N으로 표현 주어진 N을 최대한 적게 사용하여 사칙연산(+, -, *, /)으로 목표하는 number를 만들고, 최소 몇개가 필요한지 구하는 문제이다. 유의할 점은 N=5인 경우 두 개를 사용하면 55로도 만들 수 있지만, 그렇다고 N=5 number=105일때 (5 + 5) = 10 10 + "5" = 105 이렇게는 할 수 없다는 점이다. 이미 사칙연산된 숫자에는 N을 붙일 수 없고, 사칙연산할 원소로만 사용해야 한다. function solution(N, number) { var answer = 0; if(N == number) return 1; // 5 // 55 5+5 5-5 5/5 5*5 // [55 0 10 1 25] // 55 + 사칙연산 // 555, [55 0 10 1 25]* 사칙연산 // 주어진.. 2021. 8. 12.
[프로그래머스] 해시/위장 옷장에서 옷을 꺼내 입되 같은 부위에는 하나의 옷만 입을 수 있다. 빨간 티셔츠, 파란 티셔츠, 검은 모자 => [빨간 티셔츠만, 파란 티셔츠만, 검은 모자만, 빨간 티셔츠와 검은 모자, 파란 티셔츠와 검은 모자] 옷장 안에서 부위별로 옷을 분류한 후, => 모자: 3개, 티셔츠: 2개 ... 한 부위만 입는 경우 => 모자만, 티셔츠만, ... 두 부위만 입는 경우, => 모자와 티셔츠, 모자와 신발, 티셔츠와 신발 ... ... 로 조합으로 경우의 수를 구하면 된다. function solution(clothes) { const count = clothes.length; if(count < 1) return 0; const closet = {}; for(let c of clothes) { if(clo.. 2021. 8. 12.
[LeetCode] 198. House Robber (javascript) 도둑이 도둑질을 하는데 이웃한 두 집을 연속으로 털면 경찰에 잡힌다. 연속으로 털지 않으면서 가장 많은 돈을 털 수 있도록 하는 문제이다. /** * @param {number[]} nums * @return {number} */ var rob = function(nums) { let prev = 0; let cur = 0; let temp; for(let i of nums) { temp = cur; // temp = 0 // temp = 1 // temp = 2 // temp = 4 cur = Math.max(i+prev, cur); // cur = Math.max(1 + 0, 0) // cur = max(2+0, 1)// cur = max(3+1,2) prev = temp;// prev = 0 // .. 2021. 8. 12.
[LeetCode] 118. Pascal's Triangle (javascript) 피보나치와 살짝 유사한 문제이다. 각 배열의 처음과 끝에 1을 넣어주고, 더한 값들을 추가해주면 되는 간단한 문제이다. /** * @param {number} numRows * @return {number[][]} */ var generate = function(numRows) { if(numRows == 1) return [[1]]; if(numRows==2) return [[1], [1, 1]]; let result = [[1], [1,1]]; for(let i = 2; i < numRows; i++){ const arr = [1]; const prev = result[i-1]; const len = prev.length; for(let j = 0; j 2021. 8. 12.