Skip to content
Merged
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
37 changes: 37 additions & 0 deletions leetcode2/1easy/최은서/Q3606.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* @param {string[]} code
* @param {string[]} businessLine
* @param {boolean[]} isActive
* @return {string[]}
*/
//code : a-z, A-Z, 0-9, _ 만 가능
//businessLine : 'electronics', 'grocery', 'pharmacy', 'restaurant'
var validateCoupons = function (code, businessLine, isActive) {
const businessMap = new Map(); //businessList - coupons 의 key, value로 저장하기 위해
const businessList = ["electronics", "grocery", "pharmacy", "restaurant"];
const n = code.length;
const regex = /^[a-zA-Z0-9_]+$/;
const res = [];

for (const b of businessList) {
businessMap.set(b, []);
}
//key : electronices -> value : [], ...

for (let i = 0; i < n; i++) {
if (regex.test(code[i]) && isActive[i]) {
const currentBusiness = businessLine[i];
if (businessMap.has(currentBusiness)) {
businessMap.get(currentBusiness).push(code[i]);
}
}
}
for (const b of businessList) {
const coupons = businessMap.get(b);
if (coupons.length > 0) {
coupons.sort();
res.push(...coupons);
}
}
return res;
};
22 changes: 22 additions & 0 deletions leetcode2/2medium/최은서/Q1894.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* @param {number[]} chalk
* @param {number} k
* @return {number}
*/
//처음 방식 : 문제에 나와있는대로 분필 없을 때까지 각각 분필 사용하는 방식으로
//문제 : 1 <= k <= 10^9 제약조건으로 [1, 1, ...] k = 999999999 일 때 시간 초과 발생
var chalkReplacer = function (chalk, k) {
const n = chalk.length;
const tot = chalk.reduce((cur, acc) => cur + acc, 0);
let remaining = k % tot; //X회 분필 사용하는 횟수를 돌리고나서 마지막 바퀴에 남은 분필 수
if (remaining === 0) return 0; //없는 경우에는 바로 종료
for (let i = 0; i < n; i++) {
//남은 경우에는 한 명씩 분필 사용하며 순회
remaining -= chalk[i];
if (remaining < 0) {
return i;
} else if (remaining === 0) {
return i + 1;
}
}
};