본문 바로가기

ALGORITHM/프로그래머스 With JS10

[프로그래머스] H-Index / Javascript 문제 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr TRY function solution(citations) { citations.sort((a, b) => b - a); let answers = 0; for (let i = 0; i < citations.length; i++) { if (i < citations[i]) { answers++; } } return answers; } console.log(solution([47, 42, 32, 28, 24, 22, 17, 15.. 2021. 5. 3.
[프로그래머스] 가장 큰 수 / Javascript 문제 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr TRY function solution(numbers) { // 모든 number들을 string으로 바꿔주고 문자열을 그대로 연결한 수(b+a) - 바꿔 연결한 수(a+b)가 양수이면 // ex) b(3) + a(30) - a(30) + b(3) => 330 - 303 = 양수 // 3 30 순서를 그대로 유지한다. let temp = numbers.map((a) => String(a)).s.. 2021. 5. 2.
[프로그래머스] 프린터 / Javascript 문제 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr TRY function solution(priorities, location) { // 순위 초기화 let ranking = 0; // 대기목록이 다 비워질 때 까지 while (priorities.length) { // 대기목록 첫번째 요소 배열 최대값보다 작은 경우 if (priorities[0] < Math.max(...priorities)) { // 첫번째 요소가 자신일 경우 location을 배열 마지막으로 옮김 if (--location < 0) l.. 2021. 5. 1.
[프로그래머스] 기능개발 / Javascript 문제 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr TRY function solution(progresses, speeds) { // 진행중인 작업이 0이 아닐 동안 while (progresses.length) { // 첫번 째 개발이 끝나기 까지 필요한 날짜 const needDay = Math.ceil((100 - progresses[0]) / speeds[0]); // 필요한 날짜 * 개발 속도 만큼 일을 진행시킴 const proceed = progresses.map( (progress, .. 2021. 4. 30.
[프로그래머스] 다리를 지나는 트럭 / Javascript 문제 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr TRY function solution(bridge_length, weight, truck_weights) { // 다리배열을 다리 길이보다 하나 작게 0으로 채워서 만들고 // 마지막 요소에 첫 트럭을 넣는다 let bridge = new Array(bridge_length - 1).fill(0); bridge.push(truck_weights.shift()); // 트럭 하나가 이미 지났다고 가정해서 1초 지난 걸로 초기화 let tim.. 2021. 4. 29.
[프로그래머스] 위장 / Javascript 문제 코딩테스트 연습 - 위장 programmers.co.kr TRY const clothes1 = [ ['yellowhat', 'headgear'], ['bluesunglasses', 'eyewear'], ['green_turban', 'headgear'], ]; const clothes2 = [ ['crowmask', 'face'], ['bluesunglasses', 'face'], ['smoky_makeup', 'face'], ]; function solution(clothes) { // 옷의 종류와 종류별 갯수를 저장 할 객체 let obj = {}; for (let i = 0; i < clothes.length; i++) { // 옷의 종류가 정의 되지 않았으면 옷의 종류의 value = 1 i.. 2021. 4. 29.
[프로그래머스] 체육복 / Javascript 문제 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr TRY function solution(n, lost, reserve) { var answer = 0; // 학생 수 만큼 배열의 가지고 있는 유니폼 수를 1로 초기화 let hasUniform = new Array(n).fill(1); // 잃어버린 학생은 -1 을 해줌 for (let i = 0; i < lost.length; i++) { hasUniform[lost[i] - 1]--; } // 여벌이 있으면 +1 을 해줌 for (let i = 0; i.. 2021. 4. 28.
[프로그래머스] 모의고사 / Javascript 문제 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr TRY let answers = [1, 3, 2, 4, 2, 1, 3, 2, 4, 2, 1, 3, 2, 4, 2, 1, 3, 2, 4, 2]; function solution(answers) { let answer = []; // supo : 수포자 찍는 방식 let supo = [ [1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5], ]; // 수포자들의 점수를 넣을 배열 l.. 2021. 4. 28.
[프로그래머스] K번째수 / Javascript 문제 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr TRY 1 let array = [1, 5, 2, 6, 3, 7, 4]; let commands = [ [2, 5, 3], [4, 4, 1], [1, 7, 3], ]; function solution(array, commands) { var answer = []; for (let i = 0; i a - b)[commands[i][2] - 1.. 2021. 4. 27.
[프로그래머스] 완주하지 못한 선수 / Javascript 문제 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr TRY 1 (효율성 실패) let participant = ['mislav', 'stanko', 'mislav', 'ana']; // 참여 선수 let completion = ['stanko', 'ana', 'mislav']; // 완주한 선수 function solution(participant, completion) { for (let i = 0; i < completion.length; i++) { if (participant.in.. 2021. 4. 27.