diff --git a/14. happinessNumber/happinessNumber.js b/14. happinessNumber/happinessNumber.js
new file mode 100644
index 0000000..6822051
--- /dev/null
+++ b/14. happinessNumber/happinessNumber.js
@@ -0,0 +1,32 @@
+/*
+PROBLEM
+ You will be given a string of characters containing only the following characters: "(", ")", ":"
+ Create a function that returns a number based on the number of sad and happy smiley faces there is.
+ * The happy faces :) and (: are worth 1.
+ * The sad faces :( and ): are worth -1.
+ * Invalid faces are worth 0.
+ EXPLANATION :
+ happinessNumber(":):(") ➞ -1
+ The first 2 characters are :) +1 Total: 1
+ The next 2 are ): -1 Total: 0
+ The last 2 are :( -1 Total: -1
+*/
+
+function happinessNumber(smilies) {
+ let arr = smilies.split('');
+ let count = 0;
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] + arr[i + 1] == ':)') count += 1;
+
+ if (arr[i] + arr[i + 1] == '(:') count += 1;
+
+ if (arr[i] + arr[i + 1] == '):') count -= 1;
+
+ if (arr[i] + arr[i + 1] == ':(') count -= 1;
+ }
+ return count;
+}
+
+// console.log(happinessNumber(":):(")) // -1
+// console.log(happinessNumber("(:)")) // 2
+// console.log(happinessNumber("::::")) // 0
\ No newline at end of file
diff --git a/README.md b/README.md
index 80773fb..538504c 100644
--- a/README.md
+++ b/README.md
@@ -85,6 +85,7 @@ __Algorithms practiced using JS__
10. Caesar Cipher
11. Lexicographically equal or not
12. Fizz Buzz
+14. happinessNumber
## Explanation
<b>1. String reversing</b>
@@ -1532,4 +1533,59 @@ const dist = dijkstra(graph, 6);
console.log(dist);
```
-</p>
\ No newline at end of file
+</p>
+
+
+
+</p>
+<hr>
+<hr>
+
+<b>14. happinessNumber</b>
+
+__The Challenge:__
+
+Hpiness Number Problem :)
+
+__Algorithmic Thinking:__
+``` text
+PROBLEM
+ You will be given a string of characters containing only the following characters: "(", ")", ":"
+ Create a function that returns a number based on the number of sad and happy smiley faces there is.
+ * The happy faces :) and (: are worth 1.
+ * The sad faces :( and ): are worth -1.
+ * Invalid faces are worth 0.
+ EXPLANATION :
+ happinessNumber(":):(") ➞ -1
+ The first 2 characters are :) +1 Total: 1
+ The next 2 are ): -1 Total: 0
+ The last 2 are :( -1 Total: -1
+
+```
+__Implementation:__
+
+```js
+
+function happinessNumber(smilies) {
+ let arr = smilies.split('');
+ let count = 0;
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] + arr[i + 1] == ':)') count += 1;
+
+ if (arr[i] + arr[i + 1] == '(:') count += 1;
+
+ if (arr[i] + arr[i + 1] == '):') count -= 1;
+
+ if (arr[i] + arr[i + 1] == ':(') count -= 1;
+ }
+ return count;
+}
+
+console.log(happinessNumber(":):(")) // -1
+console.log(happinessNumber("(:)")) // 2
+console.log(happinessNumber("::::")) // 0
+
+```
+
+
+