목록algorithm/(js)프로그래머스 (44)
devlog_owen

문제 정답률 50%대의 나에게 너무 어려웠던 문제였다. 처음에는 옹알이 안 배열을 각각 삭제하면서 비교해야 하나?했는데 그것도 어떻게 할지 감도 안옴. 나의 풀이 function solution(babbling) { var answer = 0; let canSay = [ "aya", "ye", "woo", "ma"] for(let i =0; i

문제 알고리즘 스터디에서 오늘 푼 문제. 사실 1시부터 풀어야했는데 무슨 자신감으로 20분동안 밥먹고 나머지 시간동안 풀다가 결국 시간내에 다 못품... k 숫자만큼 명예의 전당에 오르고, 명예의 전당이 갱신될때마다 최하위점수를 배열에 넣어서 최종적으로 반환해야 한다. 나의 풀이 function solution(k, score) { //매일 발표된 명예의 전당의 최하위 점수를 return let jeondang = [] let minScore = [] for(let i=0; i a-b) if(jeondang.length > k){ jeondang.shift() } minScore.push(Math.min(...jeondang)) } return minScore } 팀원들거를 보니까 foreach, sli..

문제 문제 이해가 어려웠는데 입출력 예 #2를 읽고 이해할 수 있었다. 무조건 반복문을 돌려야한다고 생각했고 평소 쓰는 for문이 아닌 while문을 써야겠다는 생각이 들었다. 나의 풀이 function solution(a, b, n) { var answer = 0; while(n >= a){ let cola = b * Math.floor(n/a) answer += cola n= (n % a) + cola } return answer; } //콜라를 받기 위해 마트에 주어야 하는 병 수 a, // 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b, // 상빈이가 가지고 있는 빈 병의 개수 n while문으로 가지고 있는 빈병의 갯수(n)이 마트에 갖다줘야하는 빈 병수(a)보다 같거나 클때만 반복문이..

문제 왜 이런걸 지표로 설정하신거죠? 나의 풀이 function solution(citations) { let cita = citations.sort((a,b) => b-a) for(let i=0; i number >= i) if(cita[i] === filteredCita.length){ return i+1 } } } 실패작이다. 왜 그런지 사실 잘 모르겠다. function solution(citations) { citations.sort((a, b) => b - a); // citations 배열을 내림차순으로 정렬 let hIndex = 0; // 초기 h-index 값을 0으로 설정 while (hIndex hIndex)..

문제 배열 안의 배열을 다뤄야하는 문제다. 먼저 for문을 돌리면서 배열안의 i.j.k를 정의한다. 정의된 i,j로 slice한다음 sort로 오름차순으로 정렬하고, 마지막으로 배열안 k번째 인덱스들을 빈 배열인 answer에 push해서 반환한다. 나의 풀이 function solution(array, commands) { var answer = []; for(let i=0; i a-b) answer.push(sortedArr[kIdx-1]) } return answer; } 다른 사람 풀이 본문1 회고 이번 문제를 풀면서 slice를 풀어야겠다고는 바로 생각이 들었는데 slice랑 splice,split이 단어가 비슷해서 괜히 헷갈렸다. 구글링해서 잘 정리하신 분의 블로그 링크를 남긴다. 🍏Slice..

문제 먼저 배열 안의 빈도수를 센다. 그리고 객체 배열 중 value 값만을 배열로 추출한다. 나온 value 배열값을 내림차순으로 정렬한다. 그럼 큰 수부터 작은 수 순서대로 배열이 정렬된다. for문을 돌리면서 k에서 배열의 가장 큰 숫자(인덱스 0번)부터 빼면서 if문으로 값을 비교하면서 count를 1씩 추가함 count를 반환하면 그게 바로 k 크기 종류의 최솟값임. 나의 풀이 function solution(k, tangerine) { let count = 0; const obj = {}; for (let i = 0; i < tangerine.length; i++) { obj[tangerine[i]] = (obj[tangerine[i]] || 0) + 1; } const sortedArr = ..

문제 배열 안에 있는 모든 숫자들을 두개씩 더한 경우의 수를 구하는 문제였다. 중복된 값이 없어야 하고 마지막에는 오름차순으로 배열을 정렬해야 한다. 나의 풀이 function solution(numbers) { var caseNum = new Set(); for(let i = 0; i a - b) } [...new Set(temp)]을 쓰면 중복을 제거함과 동시에 배열로 전환할 수 있다. 회고 set에 대해 좀더 배울 수 있었고 스프레드 연산자를 잘 사용할 수 있어야할것같다.

문제 본문1 나의 풀이 function solution(n, words) { var answer = []; for (let i = 1; i < words.length; i++) { // words[i-1]의 마지막 문자와 words[i]의 첫 번째 문자 비교 if (words[i - 1].substr(words[i - 1].length - 1) !== words[i].substr(0, 1)) { answer.push((i % n) + 1, Math.ceil((i + 1) / n)); return answer; } } return [0, 0]; // 위의 조건이 만족되지 않으면 [0, 0]을 반환 } 첫번재 풀이. 근데 테스트를 한개를 통과못한다. 보니까 이전에 사용한 단어는 사용하면 안돼서 안되는거 같다..