본문 바로가기

Study Note/Algorithm16

728x90
프로그래머스 #2021 KAKAO BLIND -신규 아이디 추천 lv1 문제 풀이 function solution(new_id) { let answer = ''; answer = getAvailableId(new_id); return answer; } function getAvailableId(id) { let recommandId = '' const idInValidRe = /[^-_.a-z0-9]/g; const doubleDotRe = /\.{2,}/g; const startDotRe = /^\./; const endDotRe = /\.$/; // 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. recommandId = id.toLowerCase(); // 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모.. 2022. 7. 4.
프로그래머스 #탐욕법(Greedy) - 구명보트 lv2 문제 풀이 function solution(people, limit) { let answer = 0; // 구명보트 수 let startIndex = 0; let endIndex = people.length - 1; let saveActivity = true; // 구출 작업 진행 여부 people.sort((a, b) => b - a); // 제일 무거운 사람 순으로 정렬 while (saveActivity) { // 마지막 한명을 태우고 구출 작업 종료 if(startIndex === endIndex) { answer++; startIndex++; saveActivity = false; break; } // 가장 가벼운 사람과 태웠을 때 제한 무게를 넘기지 않으면 2명을 태운다. if(people[s.. 2021. 9. 13.
프로그래머스 #탐욕법(Greedy) - 체육복 lv1 풀이 문제 function solution(n, lost, reserve) { let answer = 0; let result = []; // 여벌이 있는 학생이 도난당한 경우 lost 와 reserve 에서 제외합니다. let isNotReserve = reserve.filter((re) => lost.find((lo) => re === lo)); lost = lost.filter((re) => !isNotReserve.find((notReserve) => re === notReserve)); reserve = reserve.filter((re) => !isNotReserve.find((notReserve) => re === notReserve)); for (let i=1; i lo === i); if.. 2021. 9. 12.
프로그래머스 #정렬 - H-Index lv2 문제 풀이 function solution(citations) { var answer = 0; let sortCitations = citations.sort((a, b) => a - b); let len = sortCitations.length; for(let i=0; i c >= citation).length; if(citation >= cnt) { answer = len - i; break; } } return answer; } 채점결과 2021. 9. 12.
프로그래머스 #완전탐색 - 소수 찾기 lv2 문제 풀이 function solution(numbers) { let answer = 0; let allPermutations = []; // 모든 경우의 수 [순열] let permutationsSet = []; // 중복을 제거한 경우의 수 // 1. 숫자 조합 순열 구하기 allPermutations = getAllPermutations([...numbers]); // 2. 중복제거 permutationsSet = getPermutationsSet(allPermutations) // 3. 소수 갯수 구하기 answer = getCountDicimal([...new Set(permutationsSet)]); return answer; } // 1. 숫자 조합 순열 구하기 function getAllP.. 2021. 9. 12.
프로그래머스 #스택/큐 - 프린터 lv2 문제 풀이 function solution(priorities, location) { let answer = 0; let seq = location; let len = priorities.length; let result = priorities; let printList = []; let stop = true; while (stop) { if (printList.length === len) { stop = false; break; // 탐색 완료 } const targetPrint = result[0]; const remainPrints = result.slice(1); if(remainPrints.find((print) => print > targetPrint)) { // 뒤에 큰 숫자가 있으므로 인쇄.. 2021. 9. 10.
프로그래머스 #정렬 - 가장 큰 수 lv2 제출 답안 function solution(numbers) { let answer = '', i, numbers_sort = [], number; if(Math.max(...numbers)===0) { return '0'; } for(i=0; in[1])].join('') return answer; } 풀이 과정 0만 들어 오는 경우 "0000" 으로 반환될 우려가 있으므로 제일 첫 부분에 체크하는 조건문을 작성하였다. 1000이하의 수가 주어진다는 점을 응용할 방법이 없을까 찾아보던 중 숫자를 반복하여 4자리 수로 만들면 된다는 사실을 알아내었다. 그 부분만 차용하여 문자열 내림차순으로 정렬시켰고 결과는 주어진 숫자를 join() 하여 return 하도록 하였다. 다른 사람들의 풀이 분석 다른 사람들의.. 2021. 1. 23.
프로그래머스 #데모 테스트 - 직사각형 마지막 한점 좌표 구하기 방법1 - 중복이 아닌 수를 구하여 반환 function solution(v) { let answer = [], position_x = [...new Set([v[0][0], v[1][0], v[2][0]])], position_y = [...new Set([v[0][1], v[1][1], v[2][1]])]; // x position setting let answer_x = v.filter(vv=>vv[0]==position_x[0]) if(answer_x.length===1) { answer.push(position_x[0]); } else { answer.push(position_x[1]); } // y position setting let answer_y = v.filter(vv=>vv[1]==p.. 2021. 1. 22.
프로그래머스 #완전탐색 - 모의고사 lv1 function solution(answers) { let result=[], answer, i, max_sum, j, supo_1 = [1,2,3,4,5], supo_2 = [2,1,2,3,2,4,2,5], supo_3 = [3,3,1,1,2,2,4,4,5,5], supo_sum = [0, 0, 0] for(i=0; i 2021. 1. 22.
프로그래머스 #월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 lv1 function solution(numbers) { let answer = [], i, j, len=numbers.length; for(i=0; i 2021. 1. 22.