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

    [프로그래머스 Level 2] 문자열 압축 - JavaScript

    [프로그래머스 Level 2] 문자열 압축 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr ✏️ 풀이 function solution(s) { let compression = s; for (let i = 1; i 1 ? `${count}${target}` : target); target = matched; count = 1; } } } result.push(count > 1 ? `${count}${target}` : target)..

    [프로그래머스 Level 2] 위장 - JavaScript

    [프로그래머스 Level 2] 위장 - JavaScript

    🔗 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr ✏️ 풀이 function solution(clothes) { const clothList = clothes.reduce((acc, [, type]) => { acc[type] = (acc[type] || 0) + 1; return acc; }, {}); return Object.values(clothList).reduce((acc, v) => acc * (v + 1), 1) - 1; } 옷의 종류별 개수를 구하고, (각 종류별 개수 + 1)을 모두 곱한 것에서 1을 빼면 정답이다. 각 종류별로 옷을 고를 때, 해당 종류의 옷을 입지..

    [프로그래머스 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(..