Problem
- A bookseller has lots of books classified in 26 categories labeled A, B, … Z.
- 26(A, B, … Z)개 카테고리로 분류된 많은 서적이 있다.
- Each book has a code c of 3, 4, 5 or more capitals letters.
- 각 책에는 3개 이상의 대문자로 된 코드가 있다.
- The 1st letter of a code is the capital letter of the book category.
- 코드의 첫 번째 문자는 책 카테고리의 대문자이다.
- In the bookseller’s stocklist each code c is followed by a space and by a positive integer n(int n >= 0) which indicates the quantity of books of this code in stock.
- 재고 목록(stock list)의 각 코드 뒤에는 공백이 있다.
- 그리고 양의 정수 n(n >= 0)이 표시되는데, 이는 재고 수량을 나타낸다.
- Your task is to find all the books of L with codes belonging to each category of M and to sum their quantity according to each category.
- 각 카테고리에 속하는 코드로 모든 책을 찾아 각 카테고리에 따라 수량을 합산한다.
Solution 01
// Books
const book1 = [];
const book2 = ['ABAR 200', 'CDXE 500', 'BKWR 250', 'BTSQ 890'];
function stockList(books, categories) {
let result = '';
if (books.length === 0 || categories.length === 0) {
return '';
}
for (let i = 0; i < categories.length; i++) {
let sum = 0;
for (let j = 0; j < books.length; j++) {
if (books[j][0] === categories[i]) {
sum += parseInt(books[j].split(' ')[1]);
}
}
if (result !== '') {
result += ' - ';
}
result += '(' + categories[i] + ' : ' + sum ')';
}
return result;
}
stockList(books1, ['A', 'B']); // ''
stockList(books2, ['A', 'C']); // (A : 200) - (C : 500)
stockList(books2, ['A', 'B']); // (A : 200) - (B : 1140)
stockList(books2, ['A', 'B', 'C']); // (A : 200) - (B : 1140) - (C : 500)