일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 스택
- lv2
- 프로그래머스
- 그래프 이론
- JavaScript
- DP
- 프로그래머스스쿨
- 딕셔너리
- 브루트포스 알고리즘
- 문자열
- DFS
- BFS
- CSS
- web
- 파이썬
- 백준
- 그래프이론
- 자바스크립트
- 웹 프론트엔드
- 정렬
- 그래프 탐색
- level2
- BASIC
- programmers
- 그리디 알고리즘
- 너비 우선 탐색
- 구현
- 다이나믹 프로그래밍
- 자료구조
- 알고리즘
Archives
- Today
- Total
DevLog:-)
[프로그래머스][Javascript]구명보트 본문
반응형
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드 1
function solution(people, limit) {
let visited= Array(people.length).fill(0);
people.sort((a,b)=>b-a);
let length = people.length;
let count =0;
for(let i in people){
if(visited[i]==0){
for(let j = length-1; j > i ;j--){
if(visited[j]==0){
if(people[i]+people[j]<=limit){ visited[j] = 1; }
break;
}
}
count++;
visited[i]=1;
}
}
return count;
}
이중 for 문을 이용해서 풀었다. -> 효율성 테스트 1개 실패
코드 2
function solution(people, limit) {
people.sort((a,b)=>b-a);
let count =0;
for(let i in people){
if(people.at(-1) + people[i]<= limit){
people.pop();
}
count++;
}
return count;
}
큐를 사용하여 푼 결과 성능이 좋아짐을 확인할 수 있었다.
내림차순 정렬 후 끝에 있는 값을 비교하는 코드여서 스택을 사용할 수 있었다. -> 성공
✅checkpoint!
arr.sort((a,b)=>a-b); | 배열 오름차순 정렬 |
arr.pop(); | 배열 맨 끝에 값 삭제 및 반환 |
💡풀이 결과 요약
이중 for문 코드 visited에 boolean자료형을 넣었을 때 | 효율성 테스트 결과![]() |
이중 for문 코드 visited에 (0,1)숫자자료형을 넣었을 때 | ![]() |
스택를 사용하여 풀었을 때 | ![]() |
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JavaScript]베스트앨범 (0) | 2023.09.25 |
---|---|
[프로그래머스][JavaScript]올바른 괄호 (1) | 2023.09.06 |
[프로그래머스][Javascript]카펫 (0) | 2023.08.21 |
[프로그래머스][Javascript]프로세스 (0) | 2023.08.15 |
[프로그래머스][JavaScript]JadenCase 문자열 만들기 (0) | 2023.08.13 |