Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 토이프로젝트
- 회고의 회고
- 프로그래머스
- 우아한형제들
- 러닝 자바스크립트
- npm
- 네이버 테크 콘서트
- 자바스크립트 객체
- 우아한테크캠프 4기
- AWS
- html
- toast
- 인사이드 자바스크립트
- 토이 프로젝트
- 자바
- ES6
- 알고리즘
- 자바스크립트
- 모듈 배포하기
- 개인 프로젝트
- 코드스쿼드
- 우아한테크코스
- 리액트
- 레인지 슬라이더
- express
- Hello Coding HTML5+CSS3
- 주간 회고
- CSS
- 함수
- 우아한테크캠프
Archives
- Today
- Total
블로그
[프로그래머스, 자바스크립트] 알고리즘-44 다리를 지나는 트럭 본문
출처 : 프로그래머스 알고리즘 코딩테스트 Level.2
https://programmers.co.kr/learn/courses/30/lessons/42583?language=javascript
풀이 과정
다리 위에 있는 트럭의 무게와 트럭의 위치를 파악이 필요하다.
그러므로 다리의 길이와 같은 길이를 갖는 배열을 선언하여 이를 통해 트럭의 무게, 위치를 관리한다.
또한, 다음 트럭의 무게를 확인하여 다리로 진입이 가능한지 불가능한지 검사해야한다.
답안
function solution(bridge_length, weight, truck_weights) {
let count = 0;
let arr = Array(bridge_length).fill(0);
let sec = 0;
let next = truck_weights[count];
let loadWeight = 0;
while (count > -1) {
loadWeight -= arr.pop();
if (weight >= next + loadWeight) {
arr = [next].concat(arr);
count += 1;
loadWeight += next;
next = truck_weights[count];
} else {
arr = [0].concat(arr);
}
sec += 1;
if (!loadWeight) break;
}
return sec;
}
처음에는 반복문 마다 reduce 함수를 사용하여 현재 다리 위에 있는 트럭의 무게를 계산했었지만
시간초과로 인해 실패가 발생하였다. 원인은 reduce 였다. 매 번 reduce를 두 번씩 호출하였고, 이로 인해 시간초과가 발생함을 확인했다.
다리 위에 있는 트럭의 무게를 저장하는 변수를 선언 후 트럭이 진입하거나 빠질 때 마다 증감하면 reduce를 사용하지 않을 수 있다고 판단하여 수정하니 정상적으로 통과완료!
function solution(bridge_length, weight, truck_weights) {
let count = 0;
let arr = Array(bridge_length).fill(0);
let sec = 0;
let next = truck_weights[count];
while (count > -1) {
arr.pop();
if (weight >= next + arr.reduce((acc, cur) => (acc += cur), 0)) {
arr = [next].concat(arr);
count += 1;
next = truck_weights[count];
} else {
arr = [0].concat(arr);
}
sec += 1;
if (!arr.reduce((acc, cur) => (acc += cur), 0)) break;
}
return sec;
}
*reduce를 2회 사용한 코드
'알고리즘' 카테고리의 다른 글
[프로그래머스, 자바스크립트] 알고리즘-46 스킬트리 (0) | 2020.01.09 |
---|---|
[프로그래머스, 자바스크립트] 알고리즘-45 기능개발 (0) | 2020.01.07 |
[프로그래머스, 자바스크립트] 알고리즘-43 최댓값과 최솟값 (0) | 2020.01.04 |
[프로그래머스, 자바스크립트] 알고리즘-42 쇠막대기 (0) | 2020.01.04 |
[프로그래머스, 자바스크립트] 알고리즘-41 124 나라의 숫자 (0) | 2020.01.04 |
Comments