연습장/프로그래머스 문제풀이

    [프로그래머스 Level 2] 뉴스 클러스터링 - JavaScript

    [프로그래머스 Level 2] 뉴스 클러스터링 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr ✏️ 풀이 function solution(str1, str2) { const getCount = (str) => { return [...str] .slice(0, -1) .map((v, i) => (v + str[i + 1]).toLowerCase()) .filter(v => !v.match(/[^a-z]/g)) .reduc..

    [프로그래머스 Level 2] 오픈채팅방 - JavaScript

    [프로그래머스 Level 2] 오픈채팅방 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr ✏️ 풀이 function solution(record) { const output = []; const userInfo = {}; const message = { Enter: '님이 들어왔습니다.', Leave: '님이 나갔습니다.' } record.forEach(log => { const [cmd, id, name] = log.split(' '..

    [프로그래머스 DFS/BFS] 타겟 넘버 - JavaScript

    [프로그래머스 DFS/BFS] 타겟 넘버 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 풀이 function solution(numbers, target) { const dfs = (index, sum) => { if (index === numbers.length) { if (sum === target) { return 1; } return 0; } else { const plus = dfs(index + 1, s..

    [프로그래머스 Level 2] 거리두기 확인하기 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 풀이 function solution(places) { const result ..

    [프로그래머스 Level 2] 게임 맵 최단거리 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 풀이 function solution(maps) { const xLength = maps.length; const yLength = maps[0].length; const dx = [0, 0, -1, 1]; const dy = [-1, 1, 0, 0]; const bfs = () => { const..

    [프로그래머스 Level 1] [1차] 비밀지도 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 풀이 function solution(n, arr1, arr2) { return [...Array(n)].map((_, i) => [...(arr1[i] | arr2[i]) .toString(2) .padStart(n, ' ')] .map(v => +v ? '#' : ' ') .join('') ); } 비트마스킹을 이용하여 겹쳐진 두 지도를 논..

    [프로그래머스 Level 1] 신규 아이디 추천 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 풀이 function solution(new_id) { let rec_id = new_id rec_id = rec_id .toLowerCase() .replace(/[^a-z0-9-_.]/g, '') .replace(/\.+/g, '.') .replace(/^\.|\.$/g, '') .replace(/^$/, 'a') .slice(0, 15) ..

    [프로그래머스 Level 3] 다단계 칫솔 판매 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 풀이 function solution(enroll, referral, seller, amount) { const members = new Map(); enroll.forEach((member, i) => { members.set(member, { referral: referral[i], profit: 0 }); }); seller.forEach(..

    [프로그래머스 Level 1] 완주하지 못한 선수 - JavaScript

    문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 function solution(participant, completion) { const map = new Map(); participant.forEach(name => map.set(name, (map.get(name) || 0) + 1)); completion.forEach(name => map.set(name, (map..