알고리즘/javascript

    [프로그래머스] 코딩테스트연습 > [1차] 뉴스 클러스터링

    코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr function solution(str1, str2) { let arr1 = multipleSets(str1) let arr2 = multipleSets(str2) let intersection = 0; let union = 0; const unique = new Set([...arr1, ...arr2]) unique.forEach(item => { const numArr1Has = arr1.filter(x => x === item).len..

    [프로그래머스] 코딩테스트연습 > 예상 대진표

    코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr function solution(n,a,b){ let answer = 0; let groupA = a let groupB = b while(groupA !== groupB) { groupA = Math.ceil(groupA/2); groupB = Math.ceil(groupB/2); answer++; } return answer; } 참가자가 1,2 / 3,4 / 5,6 ... 식으로 묶이므로 앞에서 두명 씩 한 그룹으로 묶어준다. A와..

    [프로그래머스] 코딩테스트연습 > 크레인 인형뽑기 게임

    코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr function solution(board, moves) { let answer = 0; //5*5에서 board[4] = 1층 , board[0] = 5층 let basket = [] //j돌면서 인형 잡았으면 다음 move로 넘어가야 하므로 stop 해줄 요소 추가 let lock = 0 for(let i=0; i

    [프로그래머스] 코딩테스트연습 > 키패드 누르기

    코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr function solution(numbers, hand) { let answer = [] // 2D Array const keypad = { 1: [0, 0], 2: [0, 1], 3: [0, 2], 4: [1, 0], 5: [1, 1], 6: [1, 2], 7: [2, 0], 8: [2, 1], 9: [2, 2], '*': [3, 0], 0: [3,..

    [프로그래머스] 코딩테스트연습 > 숫자 문자열과 영단어

    코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr function solution(s) { let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; let answer = s for(let i = 0; i < numbers.length; i++) { // i번째 숫자를 경계로 앞뒤로 나눠서 i번째 숫자에 해당하는 문제 없애기 let arr = answer.split(numbers[i]);..

    [프로그래머스] 코딩테스트연습 > 신규아이디 추천

    코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr function solution(new_id) { let answer = new_id .toLowerCase() // 1. 대문자 => 소문자 .replace(/[^a-z0-9-_.]/g, "") // 2. 형식x 문자 제거 .replace(/\.+/g, ".") // 3. 마침표 2개 이상 => 1개 .replace(/^\.|\.$/g, "") // 4. 처음이나 마지막 마침표 제거 // 5. 빈문자열 => 'a' if(answer === ''){ an..

    [프로그래머스] 코딩테스트연습 > 로또의 최고 순위와 최저 순위

    코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr function solution(lottos, win_nums) { const exceptZero = lottos.filter(number => number !== 0) const numZero = lottos.filter(number => number ===0).length const match = exceptZero.filter(number => win_nums.includes(number)).length let..

    [프로그래머스] 코딩테스트연습 > 완전탐색 > 모의고사

    코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr function solution(answers) { const stu1 = [1,2,3,4,5] const stu2 = [2,1,2,3,2,4,2,5] const stu3 = [3,3,1,1,2,2,4,4,5,5] let answer = [] const result1 = answers.filter((answer, idx) => answer === stu1[idx % stu1.length]).length const result2 = answers.filter((a..