연습장

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

    [백준 2468 - Node.js] 안전 영역

    [백준 2468 - Node.js] 안전 영역

    문제 링크 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const N = +input[0]; const areas = input.slice(1).map(v => v.split(' ').map(v => +v)); const offsetX = [0, 0, -1, 1]; const offsetY ..

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

    [JavaScript] Array.prototype.splice 직접 구현하기

    [JavaScript] Array.prototype.splice 직접 구현하기

    📝 Array.prototype.splice 명세 array.splice(start[, deleteCount[, item1[, item2[, ...]]]]) 매개변수 1. start 배열 변경을 시작할 인덱스 - 정수 문자열은 정수로 변환 - 정수, 정수 문자열 외 다른 입력은 모두 0으로 간주 - 음의 정수(-n)는 배열의 마지막 요소부터 n번째 인덱스(array.length - n)로 변환 2. deleteCount 배열에서 제거할 요소의 수 - 자연수 문자열은 정수로 변환 - 자연수, 자연수 문자열 외 다른 입력은 모두 0으로 간주 3. item1, item2, ... 배열에 추가할 요소 반환값 제거한 요소를 담은 배열 기타 - Array.prototoype.splice는 원본 배열의 요소를 변경시..

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

    [백준 7576 - Node.js] 토마토

    문제 링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 const [MN, ...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [M, N] = MN.split(' ').map(v => +v); const tomatoes = input.map(v => v.split(' ').map(v => +v)); class N..

    [JavaScript] Array.prototype.map 직접 구현하기

    [JavaScript] Array.prototype.map 직접 구현하기

    📝 Array.prototype.map 명세 arr.map(callback(currentValue[, index[, array]])[, thisArg]) 매개변수 1. callback 새로운 배열 요소를 생성하는 함수 1. currentValue 현재 순회중인 배열의 요소 2. index 현재 배열 요소의 인덱스 3. array map()을 호출한 배열 2. thisArg (생략가능) callback 함수가 실행될 때 바인딩 될 this 값 반환값 배열의 각 요소에 대해 실행한 callback 함수의 결과를 모은 새로운 배열 기타 - 희소 배열의 경우 값이 정의되지 않은 인덱스에 대해서는 callback 함수가 호출되지 않는다. (undefined가 할당된 인덱스는 호출된다.) - callback 함수에..