본문 바로가기
728x90
반응형

알고리즘/프로그래머스8

[프로그래머스/더 맵게] - JS로 힙 직접 구현해보기 문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시간 복잡도 힙을 사용하지 않고, 코드를 구현했었는데, 효율성까지 통과해야하는 문제였기 때문에 힙을 사용해서 구현을 해야만 효율성을 모두 통과할 수 있었다. 처음에는 힙을 사용하지 않고 배열을 매번 정렬했었기에 nlogn의 시간복잡도가 걸렸지만, 힙을 사용함으로써 logn으로 시간복잡도를 줄일 수 있었다. 알고리즘 설계 처음 작성한 코드는 아래와 같다. function solution(scoville, K) { let answer = 0; // 섞어야 하는 최소 횟수 // 모든 값이 K 이상인지 확.. 2023. 8. 8.
[프로그래머스-문자열 다루기 기본] 지수 표기법, 그게 뭔데? 프로그래머스 문제를 풀면서 엄청나게 간단한 문제인데 모든 테스트가 통과되지 않았다. // 테스트 미통과 코드 function solution(s) { if ((!isNaN(s) && s.length === 4) || (!isNaN(s) && s.length === 6)) return true; else return false; } 그 이유는 바로 지수 표기법(e) 때문이였다. 문제는 매우 간단하다. 만약 문자열이 모두 숫자로 구성되어 있다면 true를 리턴하고, 그렇지 않다면 false를 리턴해주면 되었다. 하지만, 여기서 문제점은 문자열이 "3e10"처럼 지수 표기법으로 표현되었을 경우이다. 대개 프로그래밍 언어에서 실수를 표기할 때 지수 표기법을 지원한다. 예를 들어 5e3은 5 * 1000을, -4.. 2023. 4. 19.
[프로그래머스/JS] Lv2. 배달 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조건 a와 b를 잇는 도로가 여러 개 있을 수 있다. 문제 풀이 1. 노드별 거리를 무한으로 하는 배열 생성(1부터 사용하기 위해 N+1의 배열 생성) 2. 인접한 노드별 가중치의 정보를 담고 있는 배열 생성 3. 인접한 노드별 가중치의 정보를 담고 있는 배열에 데이터 추가 4. 1번 마을에서부터 우선순위 큐 시작 및 초기값 0 할당 5. 우선순위 큐 배열에 값이 없을 때까지 반복 6. 연결된 노드에서의 값이 현재의 값 + 해당 노드의 가중치보다 클 경우, 값을 대체하고 우선순위 큐에 데이터 추가 .. 2023. 3. 31.
[프로그래머스] Lv2. 행렬의 곱셈 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조건 곱할 수 있는 배열만 주어진다. 정답 코드 행렬의 곱셈에 대해 알고 있어야 한다. 나는 몰라서 찾아봤다. 나의 코드 function solution(arr1, arr2) { let arr = new Array(arr1.length).fill(0); let answer = arr.map((el) => (el = new Array(arr1[0].length).fill(0))); for (let i = 0; i < arr1.length; i++) { for (let j = 0; j < arr1[i].. 2023. 3. 29.
[프로그래머스] Lv2. 땅따먹기 다시 풀어도 모르겠고, 답을 봐도 모르겠다!!! 그래서 기록하기,, 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조건 땅은 총 N행 4열이다. 한 행씩 내려올 때 같은 열은 연속해서 밟을 수 없다. 정답 코드 function solution(land) { let answer = 0; for (let i = 1; i < land.length; i++) { for (let j = 0; j < 4; j++) { // 얕은 복사본(원본 배열 수정 X) let arr = land[i - 1].slice(); // 그 전 열의 값을 가장 낮은값으로 설정.. 2023. 3. 28.
728x90
반응형