diff --git a/src/problem1.js b/src/problem1.js index 9a14f2c..728e8c7 100644 --- a/src/problem1.js +++ b/src/problem1.js @@ -1,6 +1,36 @@ function problem1(pobi, crong) { - var answer; - return answer; + if (pobi[1] !== pobi[0]+1 || crong[1] !== crong[0]+1){ + return -1; + } + + const pobiValue = Math.max(getMaxValue(pobi[0]), getMaxValue(pobi[1])); + const crongValue = Math.max(getMaxValue(crong[0]), getMaxValue(crong[1])); + + if (pobiValue > crongValue) { + return 1; + } + + else if (pobiValue < crongValue) { + return 2; + } + + else { + return 0; + } +} + +function getMaxValue(page) { + let sum = 0; + let mul = 1; + + const numbers = String(page).split(""); + + for (let number of numbers) { + sum += Number(number); + mul *= Number(number); + } + + return Math.max(sum, mul); } module.exports = problem1; diff --git a/src/problem2.js b/src/problem2.js index cebd07c..86a2ecf 100644 --- a/src/problem2.js +++ b/src/problem2.js @@ -1,6 +1,19 @@ function problem2(cryptogram) { - var answer; - return answer; + const stack = []; + + for (let i = 0; i < cryptogram.length; i++) { + const char = cryptogram[i]; + + if (stack[stack.length-1] === char){ + stack.pop(); + } + + else { + stack.push(char); + } + } + + return stack.join("") } module.exports = problem2; diff --git a/src/problem3.js b/src/problem3.js index 1baed28..0226c44 100644 --- a/src/problem3.js +++ b/src/problem3.js @@ -1,6 +1,15 @@ function problem3(number) { - var answer; - return answer; + let count = 0; + + for (let num = 1; num <= number; num++) { + const str = num.toString(); + + if (str.match(/[369]/g)){ + count += str.match(/[369]/g).length; + } + } + + return count; } module.exports = problem3; diff --git a/src/problem4.js b/src/problem4.js index ee1d3bd..dd92440 100644 --- a/src/problem4.js +++ b/src/problem4.js @@ -1,6 +1,31 @@ function problem4(word) { - var answer; - return answer; + const dict = new Map(); + + for (let i = 0; i < 26; i++) { + const upper = String.fromCharCode(65+i); + const reverseUpper = String.fromCharCode(90-i); + dict.set(upper, reverseUpper); + } + + for (let i = 0; i < 26; i++) { + const lower = String.fromCharCode(97+i); + const reverseLower = String.fromCharCode(122-i); + dict.set(lower, reverseLower); + } + + let result = ""; + + for (const char of word) { + if (dict.has(char)) { + result += dict.get(char); + } + + else { + result += char; + } + } + + return result; } module.exports = problem4; diff --git a/src/problem5.js b/src/problem5.js index 9368e87..4bd5195 100644 --- a/src/problem5.js +++ b/src/problem5.js @@ -1,6 +1,13 @@ function problem5(money) { - var answer; - return answer; + const moneyUnit= [50000, 10000, 5000, 1000, 500, 100, 50, 10, 1]; + const result = []; + + moneyUnit.forEach(unit => { + result.push(Math.floor(money/unit)); + money %= unit; + }); + + return result; } module.exports = problem5; diff --git a/src/problem6.js b/src/problem6.js index 3f842b5..b0c3cb7 100644 --- a/src/problem6.js +++ b/src/problem6.js @@ -1,6 +1,20 @@ function problem6(forms) { - var answer; - return answer; + const result = new Set(); + + for (let i = 0; i < forms.length; i++) { + for (let j = i+1; j < forms.length; j++) { + for (let k = 0; k < forms[i][1].length-1; k++) { + const piece = forms[i][1].slice(k, k+2); + + if (forms[j][1].includes(piece)) { + result.add(forms[i][0]); + result.add(forms[j][0]); + } + } + } + } + + return Array.from(result).sort() } module.exports = problem6; diff --git a/src/problem7.js b/src/problem7.js index ee1bb9d..2abf8bd 100644 --- a/src/problem7.js +++ b/src/problem7.js @@ -1,6 +1,54 @@ function problem7(user, friends, visitors) { - var answer; - return answer; + const friendList = new Set(); + const score = new Map(); + + for (const [friend1, friend2] of friends) { + if (friend1 === user) { + friendList.add(friend2); + } + else if (friend2 === user) { + friendList.add(friend1); + } + } + + for (const [friend1, friend2] of friends) { + if (friend1 !== user && friend2 !== user) { + if (friendList.has(friend1)) { + score.set(friend2, (score.get(friend2) || 0)+10); + } + + if (friendList.has(friend2)) { + score.set(friend1, (score.get(friend1) || 0)+10); + } + } + } + + for (const visitor of visitors) { + if (!friendList.has(visitor) && visitor !== user) { + score.set(visitor, (score.get(visitor) || 0)+1); + } + } + + const sorted = Array.from(score).sort((a, b) => { + if (b[1] !== a[1]) { + return b[1]-a[1]; + } + + return a[0].localeCompare(b[0]); + }); + + const result = []; + for (const [name, score_] of sorted) { + if (result.length === 5) { + break; + } + + if (score_ > 0) { + result.push(name); + } + } + + return result; } module.exports = problem7;