Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
34 changes: 34 additions & 0 deletions 연서/week9/다리를지나는트럭.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
function solution(bridge_length, weight, truck_weights) {
let answer = 0;

// 다리 위에 올라간 트럭 배열
let bridge = new Array(bridge_length).fill(0);
// 현재 시점 다리에 걸린 하중
let bridge_sum = 0;

// 1초를 증가시키고, 맨 처음 트럭을 다리에 올린다.
answer++;
bridge.shift();
bridge_sum += truck_weights[0];
bridge.push(truck_weights.shift());

// 대기 트럭 배열이 남아있거나 다리 위에 올라간 트럭 배열이 남아있는 동안,
while (bridge_sum > 0) {
// 우선 시간이 1초 지났을 때,
answer++;

// 큐의 맨 앞을 꺼내고,
bridge_sum -= bridge.shift();

// 만약 현재 시점 다리 하중에 다음 트럭의 무게를 더해도 다리가 버틸 수 있다면?
if (truck_weights.length > 0 && bridge_sum + truck_weights[0] <= weight) {
// 다음 트럭을 다리 배열에 넣는다.
bridge_sum += truck_weights[0];
bridge.push(truck_weights.shift());
} else {
bridge.push(0);
}
}

return answer;
}
21 changes: 21 additions & 0 deletions 연서/week9/주식가격.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function solution(prices) {
let answer = [];

let idx = 0;

while (idx < prices.length) {
let time = 0;
for (let i = idx + 1; i < prices.length; i++) {
if (prices[idx] > prices[i]) {
time++;
break;
} else {
time++;
}
}
answer.push(time);
idx++;
}

return answer;
}
12 changes: 12 additions & 0 deletions 연서/week9/카펫.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
function solution(brown, yellow) {
let carpet = brown + yellow;
let w, h;

for (let h = 3; h < brown; h++) {
if (carpet % h === 0) {
w = carpet / h;

if ((w - 2) * (h - 2) === yellow) return [w, h];
}
}
}
16 changes: 16 additions & 0 deletions 연서/week9/큰수만들기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
function solution(number, k) {
let stack = [];
for (let i = 0; i < number.length; i++) {
let value = number[i];
//마지막 숫자와 현재 숫자를 비교하며 현재 숫자가 더 크면 해당 숫자를 pop
while (k > 0 && stack[stack.length - 1] < value) {
// 현재 숫자보다 큰 수가 나올때까지 최대 k번 반복
stack.pop();
k--;
}
stack.push(value);
}
// 모든 숫자를 비교한 후 k가 0보다 크면 남은 k만큼 뒤에서 제거
stack.splice(stack.length - k, k);
return stack.join("");
}
21 changes: 21 additions & 0 deletions 연서/week9/할인행사.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function solution(want, number, discount) {
var answer = 0;

const isMatch = (arr) => {
// 할인 품목과 원하는 제품이 일치하는지 확인하는 함수
var map = new Map(); // 매번 map을 초기화 해준다.
arr.forEach((v) => map.set(v, (map.get(v) || 0) + 1)); // 할인 품목들을 map에 셋팅한다.
for (let i = 0; i < want.length; i++) {
if (map.get(want[i]) !== number[i]) return false;
} // 원하는 품목의 수량과 할인 품목이 일치하지 않으면 false
return true; // 일치하면 true를 리턴한다
};

for (let j = 0; j <= discount.length - 10; j++) {
var arr = discount.slice(j, j + 10); // 10일동안 할인이 되므로(회원 자격 부여) 10개씩 배열을 잘라준다.
if (isMatch(arr)) {
answer++;
}
}
return answer;
}