본문 바로가기

프로그래머스/JavaScript

(46)
프로그래머스 JavaScript 클릭하면 해당 레벨 목록으로 이동합니다. Level 1 Level 2 Level 3 Level 4 Level 5 Level 1 2016년 3진법 뒤집기 K번째수 x만큼 간격이 있는 n개의 숫자 가운데 글자 가져오기 같은 숫자는 싫어 나누어 떨어지는 숫자 배열 내적 두 개 뽑아서 더하기 두 정수 사이의 합 로또의 최고 순위와 최저 순위 모의고사 문자열 내 p와 y의 개수 문자열 내 마음대로 정렬하기 문자열 내림차순으로 배치하기 문자열 다루기 기본 문자열을 정수로 바꾸기 서울에서 김서방 찾기 소수 만들기 소수 찾기 수박수박수박수박수박수? 시저 암호 신규 아이디 추천 실패율 약수의 합 예산 완주하지 못한 선수 음양 더하기 이상한 문자 만들기 자릿수 더하기 자연수 뒤집어 배열로 만들기 정수 내림차순으로 배치하기..
[프로그래머스 JavaScript] 3진법 뒤집기 - 10진법을 3진법으로 바꿔줍니다. - 나온 숫자를 뒤집어줍니다. - 이 숫자를 다시 10진법으로 표현합니다. function solution(n) { var answer = 0; // 10진법으로 나타냈던 숫자를 3진법으로 바꿔줍니다. const transNum = n.toString(3); // 3진법으로 나타낸 숫자를 뒤집어줍니다. const reverseNum = transNum.split('').reverse().join(''); // 현재 3진법으로되어있는 것을 다시 10진법으로 되돌려줍니다. answer = parseInt(reverseNum, 3); return answer; } toString() : 특정한 Number 객체를 나타내는 문자열을 반환하는 메서드 * toString(진수)..
[프로그래머스 JavaScript] Level1 제일 작은 수 제거하기 function solution(arr) { var answer = []; var smallest = 0; for(var i = 0; i x == smallest), 1); answer = arr.length == 0 ? [-1] : arr; return answer; }
[프로그래머스 JavaScript] Level1 정수 제곱근 판별 function solution(n) { var answer = 0; answer = Math.sqrt(n) == Math.round(Math.sqrt(n)) ? Math.pow(Math.sqrt(n)+1, 2) : -1; return answer; }
[프로그래머스 JavaScript] Level1 정수 내림차순으로 배치하기 function solution(n) { var answer = 0; n = n.toString().split('').sort((a, b) => b - a).join(''); answer = Number(n); return answer; }
[프로그래머스 Javascript] Level1 자연수 뒤집어 배열로 만들기 function solution(n) { var answer = []; answer = n.toString().split('').reverse().map(val => Number(val)); return answer; }
[프로그래머스 JavaScript] Level1 모의고사 function solution(answers) { var answer = []; var total1 = 0; var total2 = 0; var total3 = 0; for(var i = 0; i < answers.length; i++) { var index = i % 5 if(index == 0) { answers[i] == 1 ? total1++ : total1; } else if(index == 1) { answers[i] == 2 ? total1++ : total1; } else if(index == 2) { answers[i] == 3 ? total1++ : total1; } else if(index == 3) { answers[i] == 4 ? total1++ : total1; } else ..
[프로그래머스 JavaScript] Level1 완주하지 못한 선수 function solution(participant, completion) { var answer = ''; participant.sort(); completion.sort(); for(var i = 0; i < participant.length; i++) { if(participant[i] != completion[i]) { answer = participant[i] participant.splice(i, 1) } } return answer; }
[프로그래머스 Javascript] Level2 프린터 function solution(priorities, location) { var answer = 0; let printList = []; let documnet = ''; let print = false; let max = 0; priorities = priorities.map((e, i) => e = {'number': i, 'priority': e}); while (priorities.length > 0) { documnet = priorities.shift(); max = priorities.reduce( ( a, c ) => a = Math.max(a, c.priority), 0 ) print = max > documnet.priority ? false : true; print ? printLi..
[프로그래머스 Javascript] Level2 기능개발 function solution(progresses, speeds) { var answer = []; const period = progresses.map((e, i) => Math.ceil((100-e)/speeds[i])); const last = period.length - 1; let day = 0; let count = 0; period.forEach(function(e, i) { count++; if (day == 0 || e > day) { day = e; } if (day < period[i+1] || i === last) { answer.push(count); count = 0; } }); return answer; }
[프로그래머스 JavaScript] Level2 다리를 지나는 트럭 ㅎㅎ.... 스택큐 알고리즘으로 푸는 방법을 모르겠다 내 수준은 아직 문제를 읽고 -> 문제 해결 방법을 생각 -> 그 생각을 코드고 옮기는 것 뿐이댱ㅠㅠ function solution(bridge_length, weight, truck_weights) { var answer = 0; let on_bridge = []; let weights_sum = 0; let crossing = true; while (crossing) { ++answer; weights_sum = on_bridge.reduce((a, c) => a + c.truck_w, 0) + truck_weights[0]; if (weights_sum --e.distance); on_bridge.length ? on_bridge = on_br..
[프로그래머스 JavaScript] Level1 K번째수 commands.map((e, i) => answer.push((array.slice(e[0] - 1, e[1]).sort((a, b) => a - b))[e[2] - 1]));
[프로그래머스 JavaScript] Level2 가장 큰 수 비교하는 방법 정렬할 때, 두 수를 연결했을 때, 더 큰 수가 나오는 순서로 정렬을 한다. [초기 코드] function solution(numbers) { var answer = ''; numbers = numbers.map(e => String(e)); numbers.sort((a, b) => { if (a+b > b+a) { return -1; } else if (a+b answer += e); return answer; } ㅊ function solution(numbers) { var answer = ''; numbers = numbers.map(e => String(e)); numbers.sort((a, b) => { if..
[프로그래머스 JavaScript] Level2 H-Index - 논문 n편 중, h번 이상 인용된 논문이 h편 이상일때, h의 최댓값이 이 과학자의 H-Index - 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return - 논문의 수는 1편 이상 1,000편 이하 - 인용 횟수는 0회 이상 10,000회 이하 function solution(citations) { var answer = 0; for (let h = citations.length; h > 0; h--) { let q = 0; q = citations.filter(e => e >= h).length; answer = q === h && answer < h ? h : answer; } return answer; } 채점결과 11번만 오류 h번 이상 ..
[프로그래머스 JavaScript] Level2 탑 function solution(heights) { var answer = []; const length = heights.length; heights.reverse(); answer = heights.map((e, i) => { for (let j = i+1; j < length; j++) { if (e < heights[j]) { return length - j; } } return 0; }).reverse(); return answer; }
[프로그래머스 JavaScript] Level1 [1차] 비밀지도 - 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백 또는 # 두 종류로 이루어짐 - 전체 지도는 두장의 지도를 겹쳐서 얻음 - 1또는 2 둘 중 하나라도 벽이면 벽 - 지도 1과 지도 2는 각각 정수 배열로 암호화 - 암호화된 배열을 이진수로 변환했하여 0이면 공백 1이면 벽 - 원래의 비밀지도를 해독하여 '#', 공백으로 구성된 문자열 배열로 출력 비트연산 정수를 이진수로 표현하여 0 또는 1의 값을 가질 때, 한자리의 숫자를 비트(bit)라고 한다. 비트 연산자의 종류 & (ADN) 모두 1이면 1을 반환 | (OR) 하나라도 1이면 1을 반환 ^ (XOR) 서로 다르면 1을 반환 ~ (NOT) 값을 반전하여 반환 지도를 겹치면 나올 숫자를 체크합니다. 둘 중 하나라도 1이면 1을 ..
[프로그래머스 JavaScript] Level1 실패율 function solution(N, stages) { var answer = []; var status = []; let users = stages.length; for (let i = 0; i i i+1 == e).length; let fail = stay / tried; status.push({stage: i + 1, fail: fail}); status.sort((a, b) => b.fail - a.fail); } for (let i = 0; i < N; i++){ answer.push(status[i].stage); } return answer..
[프로그래머스 JavaScript] Level1 예산 - 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. - 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어집니다. - 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 최대한 많은 부서에 물품을 비원할 수 있으려면, 신청 금액이 적은 부터들부터 주는것이 최대한 많이 줄 수 있는 방법이다. reduce로 누적 합계를 끝까지 구하긴 하지만 예산보다 작은 경우에는 숫자를 카운트(answer++; answer을 1씩 추가)하여 누적 함수 몇번째까지 예산안에 들어오는지 확인해줍니다. function solution(d, budget) { var answer = 0; d.sort( (a, b) => a - b ); // 작은 수부터 나열 d.redu..
[프로그래머스 JavaScript] Level1 크레인 인형뽑기 게임 function solution(board, moves) { let answer = 0; let count = moves.length; // 움직일 횟수 let col = board.length; // 현재 board의 col수 let bascket = []; // 뽑은 인형 쌓는 바구니 let lastItem = 0; // 바구니의 마지막 인덱스 for (let i = 0; i < count; i++) { let selected = moves[i] - 1; // 선택되어진 열 let pick = 0; // 뽑은 인형 // 해당 열에서 가져올 인형 (0은 인형없는 빈칸) for (let j = 0; j < col; j++) { if (board[j][selected] !== 0) { // 뽑힌 인형 pi..
[프로그래머스 JavaScript] Level1 체육복 논리 NOT( ! ) 연산자는 true 값을 false 로 변환 false 으로 변환할 수 있는 표현 null NaN 0 빈 문자열 ("", '', ``) undefined 위의 표현을 제외한 나머지는 true !true // false !-1 // false !"-1" // false !35 // false !"35" // false !"cat" // false !"true" // false !"false" // false !{} // false ![] // false !function(){} // false !false // true !null // true !undefined // true !NaN // true !0 // true !"" // true function solution(n, lost..