전체 글

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr핵심 아이디어장르별로 노래와 재생 횟수 분류:songsByGenre 객체에 각 장르별로 노래의 재생 횟수와 인덱스를 저장.genrePlayCount 객체에 각 장르의 총 재생 횟수를 저장.장르 정렬:genrePlayCount를 기준으로 각 장르의 총 재생 횟수를 내림차순으로 정렬한 배열 sortedGenres를 생성.장르별로 노래 정렬 및 상위 2개 선택:각 장르에서 노래를 재생 횟수 기준으로 정렬하고, 재생 횟수가 동일하면 인덱스 순으로 정렬.상위 2개의 노래를 선택해 answer 배열에 저장.결과 반환:a..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr핵심 아이디어의류 데이터 구조화:clothes 배열을 순회해 각 의류 아이템의 타입별로 개수를 세는 객체 clothesByType을 생성.타입별 개수 세기:각 아이템에서 타입을 추출해 해당 타입의 개수를 증가시킴.타입이 처음 등장할 경우에는 1로 초기화.조합 수 계산:Object.values(clothesByType)를 사용해 타입별 의류의 개수 배열을 생성.reduce를 사용해 각 타입의 개수에 1을 더한 후 곱해 전체 조합 수를 계산.초기값을 1로 설정해 곱셈을 진행.아무것도 착용하지 않는 경우 제외:최종..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr핵심 아이디어전화번호 목록을 저장하기 위해 phone_book 배열의 각 전화번호를 키로 가지는 해시 테이블인 phoneMap을 생성한다. 해시를 사용하여 전화번호 검색을 O(1) 시간 복잡도로 수행할 수 있다.각 전화번호에 대해 1자리부터 시작하여 마지막 자리 전까지의 모든 접두사를 생성하고, 해당 접두사가 phoneMap에 존재하는지 확인한다.만약 접두사가 phoneMap에 존재한다면, 해당 전화번호가 다른 전화번호의 접두사임을 의미하므로 false를 반환한다.모든 접두사 검사가 끝났다면, 모든 전화번호에..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr핵심 아이디어배열을 사용하지 않고 구간만 계산: 모든 아파트에 대해 배열을 만들지 않고, 기지국이 설치된 범위와 그 사이의 전파가 닿지 않는 구간을 계산한다.전파가 닿지 않는 구간을 기준으로 최소 기지국 계산: 기지국이 닿지 않는 구간의 길이를 기준으로 필요한 기지국 개수를 계산하여 효율성을 높인다.기지국 사이의 전파가 닿지 않는 구간 처리: 각 기지국 사이와 마지막 기지국 이후에 전파가 도달하지 않는 구간에 대해 필요한 기지국을 계산한다.정답function solution(n, stations, w) { ..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 핵심 아이디어목표 스킬 트리를 확인할 때, 목표 스킬 트리에서 아직 배우지 않은 스킬이 있어도 순서만 맞으면 유효한 스킬 트리로 간주한다.목표 스킬 트리와 관련 없는 스킬은 검사 과정에서 무시한다.배우려는 스킬(learned_skill)이 목표 스킬 트리의 첫 번째 스킬과 일치하지 않으면 해당 스킬 트리는 유효하지 않다. 일치할 경우, 목표 스킬 트리의 첫 번째 스킬을 제거하고 다음 스킬로 진행한다.이러한 과정을 스킬 트리의 모든 스킬에 대해 반복해 최종적으로 유효한 스킬 트리의 개수를 계산한다.정답func..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr핵심 아이디어이 코드는 최소한의 점프를 사용하여 건전지 사용량을 최소화한다. 건전지는 점프할 때만 소모되므로, 최대한 점프를 피하고 순간이동을 활용하는 것이 효율적이다.n % 2 === 0일 때 n /= 2는 현재 거리가 짝수일 경우 순간이동을 통해 건전지 사용 없이 이동할 수 있음을 의미한다. 이는 효율적인 이동 방법이다.n % 2 !== 0일 때는 1칸 점프를 해야 하며, 이때 n -= 1을 통해 홀수를 짝수로 만들어 이후에 순간이동이 가능하게 한다. 이 과정에서 점프 횟수가 증가하고, count는 점프한..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 핵심 아이디어배열 A와 B는 오름차순으로 정렬된다. 이를 통해 작은 값부터 차례대로 비교할 수 있다.A의 각 원소 a를 순회하면서, B에서 a보다 큰 값을 찾기 위해 포인터 i를 사용한다.while 루프는 B[i]가 a보다 작거나 같으면 i를 증가시켜 a보다 큰 값을 찾는다.a보다 큰 값 B[i]를 찾으면, 그 값을 매칭한 것으로 간주하고 answer를 1 증가시키고, i를 다시 증가시켜 다음 비교에 사용한다.두 배열을 모두 순회한 후, 조건을 만족하는 쌍의 개수인 answer를 반환한다.정답function..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr핵심 아이디어현재 위치를 추적하기 위해 currentPath 배열을 사용하며, 초기값은 (0, 0)으로 설정된다.입력된 문자열 dirs를 순회하며 각 방향(U, D, L, R)에 따라 현재 위치를 업데이트한다. 방향에 따라 y 좌표를 증가 또는 감소시키거나, x 좌표를 증가 또는 감소시킨다.새로운 위치가 (-5, -5)와 (5, 5) 경계를 넘어가지 않도록 검증하고, 경계를 넘으면 해당 이동을 무시한다.이동 전의 좌표와 이동 후의 좌표를 기반으로 형식을 지정해 경로를 문자열 형태로 만든다. 이 경로는 최소값과..
문제 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 정답 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; const input = fs .readFileSync(filePath) .toString() .split("\n") .map(_ => _.split("")); // 배열에서 가장 긴 문자열의 길이 구하기 const maxStrNum = Math.max.apply( n..
문제 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 정답 const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "test.txt"; const input = fs .readFileSync(filePath) .toString() .split("\n") .map(str => str.split(" ").map(Number)); // 첫 번째 행을 A, B의 행렬 크기를 알려주는 변수로 따로 빼기..
카버
카버의 코딩일기