
😎풀이
code 확인
1-1. 빈 값 안됨
1-2. 영문 대/소문자 및 정수와 _외 안됨
businessLine 확인
2-1. electronics, grocery, pharmacy, restaurant 외 안됨
isActive는 true 여야 함
- 해당되는 활성화 티켓을 이전 언급한
businessLine 순서로 오름차 순 정렬 즉 electonics ~ restaurant
- 쿠폰
code를 사전 순 오름차 순 정렬
- 정렬된 활성화 티켓 목록 반환
function validateCoupons(code: string[], businessLine: string[], isActive: boolean[]): string[] {
const validBusinessLine = ["electronics", "grocery", "pharmacy", "restaurant"]
const n = code.length
const coupons = []
for(let i = 0; i < n; i++) {
const curCode = code[i]
if(!curCode) continue
if(curCode.match(/[^\w\d_]/g)) continue
const curBusinessLine = businessLine[i]
if(validBusinessLine.indexOf(curBusinessLine) === -1) continue
const curIsActive = isActive[i]
if(!curIsActive) continue
coupons.push({
code: curCode,
businessLine: curBusinessLine,
})
}
const sortedCoupons = coupons.toSorted(({ code: aCode, businessLine: aBusinessLine }, { code: bCode, businessLine: bBusinessLine }) => {
const aBusinessLineIdx = validBusinessLine.indexOf(aBusinessLine)
const bBusinessLineIdx = validBusinessLine.indexOf(bBusinessLine)
if(aBusinessLineIdx !== bBusinessLineIdx) return aBusinessLineIdx - bBusinessLineIdx
if(aCode > bCode) return 1
else if(aCode === bCode) return 0
else return -1
})
return sortedCoupons.map(coupon => coupon.code)
};