레벨2 8

[프로그래머스] n^2 배열 자르기 (JS)

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이  (1) 문제에서 요구한 2차원 배열을 초기화한다.  (2) flat 메서드를 이용하여 1차원 배열로 변환한다.  (3) 요구사항에 맞게 left에서 right까지 잘라서 답을 return한다. 시간초과2차원 배열을 생성할 때, 2차원 배열을 1차원 배열로 변환할 때 각각 O(n^2)의 시간이 소요된다..function solution(n, left, right) { const answer = []; const matrix = Array.from({ length: n }, (_, i) => Array.from({ len..

코딩테스트 2025.01.01

[프로그래머스] 이진 변환 반복하기 (JS)

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이  (1) 문자열 s에서 0의 갯수를 구하기 위해 배열로 변환 -> filter 메서드를 이용하여 length를 구한다.  (2) 1만 추출하여 2진수로 변한하기 위해 toString 메서드를 사용한다.  (3) s가 1이 될 때까지 반복한 후 2진수 변환 횟수, 지운 2의 총 갯수를 반환한다.function solution(s) { let tryCnt = zeroCnt = 0; while (s !== "1") { s = s.split(""); zeroCnt += s.filter(num => num ===..

코딩테스트 2025.01.01

[프로그래머스] 캐시 (JS)

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이  (1) 캐시 배열을 생성한다.  (2) 캐시에 들어 있지 않은 도시는 실행 시간 5초를 더해주고, 캐시의 가장 최근 사용한 위치에 추가한다. 캐시 사이즈 초과를 막기 위해 가장 오랫동안 사용되지 않은 항목을 우선적으로 제거한다.  (3) 캐시에 들어 있는 도시는 실행 시간 1초를 더해주고, 캐시의 가장 최근 사용한 위치에 추가한다.function solution(cacheSize, cities) { if (cacheSize === 0) return cities.length * 5; const cache = []; let ..

코딩테스트 2024.11.24

[프로그래머스] 테이블 해시 함수 (JS)

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이  (1) 조건에 맞게 data를 정렬한다.  (2) 정렬된 data에서 각 튜플의 요소를 인덱스 i + 1로 나눈 나머지를 구하고, 그 나머지들을 모두 합산한다.  (3) XOR 연산자 ^을 사용하여 answer를 구한다.function solution(data, col, row_begin, row_end) { let answer = 0; data.sort((a, b) => { if (a[col - 1] === b[col - 1]) return b[0] - a[0]; return a[col - 1] - ..

코딩테스트 2024.11.20

[프로그래머스] 숫자 카드 나누기 (JS)

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이  (1) 비교할 마지막 숫자를 구하기 위해 두 배열의 최대 정수를 구한다. (Math.max 시간초과 -> sort로 변경)  (2) every 함수를 이용하여 조건에 맞는 답을 구한다.function solution(arrayA, arrayB) { const unionArr = [...arrayA, ...arrayB].sort((a, b) => a - b); const limitNum = unionArr[unionArr.length - 1]; let answer = 0; for (let i = 2; i num % ..

코딩테스트 2024.11.20

[프로그래머스] 과제 진행하기 (JS)

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이  (1) 과제 시작시간 기준으로 오름차순 정렬 후 비교하기 편하게 분(정수)으로 치환한다.  (2) (시작시간 + 소요시간)과 다음 과제의 시작시간을 비교하여 과제 완료가 가능하면 answer에 push한다.그렇지 않으면 과제를 중단하고 남은 시간과 함께 stopPlan에 push한다.  (3) 과제 완료가 가능한 경우 다음 과제의 시작 시간과, 중단된 과제를 저장하고 있는 stotPlan을 이용하여 최근 과제부터 순차적으로 수행한다. function solution(plans) { const answer = []; const stop..

코딩테스트 2024.11.16

[프로그래머스] 스킬트리 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이  (1) skill_trees를 순회하면서 각 요소마다 skill에 있는 알파벳을 제외하고는 모두 지운다.  (2) 필터로 반환된 배열과 skill의 length를 똑같이 맞추고 같은 값이면 answer를 1씩 늘린다.function solution(skill, skill_trees) { const skillArr = skill.split(""); let answer = 0; skill_trees.forEach(skill => { const compareSkill ..

코딩테스트 2024.09.12

[프로그래머스] 방문 길이 (JS)

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이*상하좌우 5 or -5를 넘어가면 안되기 때문에 5 or -5에서 초과하려 할 때 continue로 끊어준다.*시작점과 도착점을 스프레드 연산자를 이용해 같이 관리한다. (처음 걸어본 길만 구해주기 위해) 1. 시작점에서 도착점으로 이동할 때 그 경로를 변수에 저장하여 answer에 넣는다.2. answer에 있는 값과 비교하는 변수가 다른 경로일때만 answer에 그 경로를 push한다.3. for문이 끝난 후 answer에는 unique한 경로만 있으므로 answer의 length를 return한다..

코딩테스트 2024.08.28