diff --git a/src/problem1.js b/src/problem1.js index 9a14f2c..afae632 100644 --- a/src/problem1.js +++ b/src/problem1.js @@ -1,6 +1,31 @@ function problem1(pobi, crong) { - var answer; - return answer; + if (pobi[1]-pobi[0] != 1 || crong[1]-crong[0] != 1) return -1; + if (Math.min(pobi, crong) < 1 || Math.max(pobi, crong) > 400) return -1; + + const max_pobi = Math.max(...sumAndProduct(pobi)); + const max_crong = Math.max(...sumAndProduct(crong)); + + if (max_pobi == max_crong) return 0; + if (max_pobi > max_crong) return 1; + + else return 2; +} + +function sumAndProduct(arr){ + const ret = []; + + arr.forEach(page => { + const digits = []; + + while(page > 0){ + digits.push(page % 10); + page = parseInt(page / 10); + } + ret.push(digits.reduce((acc, cur) => acc + cur, 0)); // 누적 합 + ret.push(digits.reduce((acc, cur) => acc * cur, 1)); // 누적 곱 + }); + + return ret; } module.exports = problem1; diff --git a/src/problem2.js b/src/problem2.js index cebd07c..9cb1460 100644 --- a/src/problem2.js +++ b/src/problem2.js @@ -1,6 +1,12 @@ function problem2(cryptogram) { - var answer; - return answer; + const stack = []; + + [...cryptogram].forEach(char => { + if(stack.at(-1) != char) stack.push(char); + else stack.pop(); + }); + + return stack.toString().replaceAll(',',''); } module.exports = problem2; diff --git a/src/problem3.js b/src/problem3.js index 1baed28..a703c5a 100644 --- a/src/problem3.js +++ b/src/problem3.js @@ -1,6 +1,16 @@ function problem3(number) { - var answer; - return answer; + let count = 0; + for (let i=1; i<=number; ++i) count += count369(i); + return count; +} + +function count369(number){ + let count = 0; + while (number > 0){ + switch (number % 10) {case 3: case 6: case 9: ++count}; + number = parseInt(number / 10); + } + return count; } module.exports = problem3; diff --git a/src/problem4.js b/src/problem4.js index ee1d3bd..adeda5e 100644 --- a/src/problem4.js +++ b/src/problem4.js @@ -1,5 +1,15 @@ function problem4(word) { - var answer; + var answer = ""; + + [...word].forEach(char => { + if (/[A-Z]/.test(char)) + answer += String.fromCharCode(65+25-(char.charCodeAt()-65)); + else if (/[a-z]/.test(char)) + answer += String.fromCharCode(97+25-(char.charCodeAt()-97)); + else + answer += char; + }); + return answer; } diff --git a/src/problem5.js b/src/problem5.js index 9368e87..f2f7a9b 100644 --- a/src/problem5.js +++ b/src/problem5.js @@ -1,5 +1,10 @@ function problem5(money) { - var answer; + const answer = []; + const denoms = [50000, 10000, 5000, 1000, 500, 100, 50, 10, 1]; + denoms.forEach(denom => { + answer.push(parseInt(money / denom)); + money %= denom; + }); return answer; } diff --git a/src/problem6.js b/src/problem6.js index 3f842b5..e83d254 100644 --- a/src/problem6.js +++ b/src/problem6.js @@ -1,6 +1,21 @@ function problem6(forms) { - var answer; - return answer; + const set = new Set(); + const map = new Map(); + + forms.forEach(([email, nickname]) => { + for (let i=0; i { + if (!map_friends.has(a)) map_friends.set(a, new Set()); + if (!map_friends.has(b)) map_friends.set(b, new Set()); + map_friends.get(a).add(b); + map_friends.get(b).add(a); + }); + + const user_friends = map_friends.get(user) || new Set(); + + map_friends.forEach((set_friends, friend) => { + if (friend === user || user_friends.has(friend)) return; + let count = 0; + set_friends.forEach(person => { + if (user_friends.has(person)) ++count; + }); + + if (count > 0) + map_scores.set(friend, (map_scores.get(friend) || 0) + count * 10); + }); + + visitors.forEach(visitor => { + if (visitor !== user && !user_friends.has(visitor)){ + map_scores.set(visitor, (map_scores.get(visitor) || 0) + 1); + } + }); + + const ret = Array.from(map_scores.entries()) + .filter(([, score]) => score > 0) + .sort((a,b) => b[1]-a[1] || a[0].localeCompare(b[0])) + .slice(0,5) + .map(([friend]) => friend); + + return ret; } module.exports = problem7;