diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/Stack.iml b/.idea/Stack.iml
new file mode 100644
index 0000000..4ad286a
--- /dev/null
+++ b/.idea/Stack.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..06bb031
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..4691e04
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2bbf565
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Answers/HowToSend.txt b/Answers/HowToSend.txt
deleted file mode 100644
index 85689dc..0000000
--- a/Answers/HowToSend.txt
+++ /dev/null
@@ -1 +0,0 @@
-put your projects here
\ No newline at end of file
diff --git a/Answers/stack_exercises.py b/Answers/stack_exercises.py
new file mode 100644
index 0000000..9791cd9
--- /dev/null
+++ b/Answers/stack_exercises.py
@@ -0,0 +1,178 @@
+class Stack:
+
+ def __init__(self):
+ self.items = []
+
+ def push(self, item):
+ self.items.append(item)
+
+ def isEmpty(self):
+ return len(self.items) == 0
+
+ def pop(self):
+ if self.isEmpty():
+ return None
+ return self.items.pop()
+
+ def peek(self):
+ if self.isEmpty():
+ return None
+ return self.items[-1]
+
+ def size(self):
+ return len(self.items)
+
+ def get_max(self):
+ max_index = 0
+ for i in range(0, self.size()):
+ if self.items[i] > self.items[max_index]:
+ max_index = i
+ return self.items[max_index]
+
+
+def reverse_string(input_string):
+ s = Stack()
+ for char in input_string:
+ s.push(char)
+
+ reversed_string = ''
+ while not s.isEmpty():
+ reversed_string += s.pop()
+
+ return reversed_string
+
+
+def is_operator(char):
+ return char in '*-+/^'
+
+
+def evaluate_postfix(expression):
+ s = Stack()
+ for char in expression.split():
+ if is_operator(char):
+ operand2 = s.pop()
+ operand1 = s.pop()
+ result = None
+ if char == '*':
+ result = operand1 * operand2
+ elif char == '-':
+ result = operand1 - operand2
+ elif char == '+':
+ result = operand1 + operand2
+ elif char == '/':
+ if operand2 == 0:
+ raise ZeroDivisionError("Division by zero")
+ result = operand1 / operand2
+ elif char == '^':
+ result = operand1 ^ operand2
+ s.push(result)
+ else:
+ s.push(int(char))
+
+ return s.pop()
+
+
+def is_balanced(expression):
+ matching = {')': '(', '}': '{', ']': '['}
+ s = Stack()
+ for char in expression:
+ if char in matching.values():
+ s.push(char)
+ elif char in matching.keys():
+ if s.isEmpty() or matching[char] != s.pop():
+ return False
+
+ return s.isEmpty()
+
+
+def prefix_to_postfix(expression):
+ s = Stack()
+ for char in expression.split()[::-1]:
+ if is_operator(char):
+ operand1 = s.pop()
+ operand2 = s.pop()
+ post_ex = operand1 + " " + operand2 + " " + char
+ s.push(post_ex)
+ else:
+ s.push(char)
+
+ return s.pop()
+
+
+def sort_stack(stack):
+ temp_s = Stack()
+ while not stack.isEmpty():
+ temp = stack.pop()
+ while not temp_s.isEmpty() and temp < temp_s.peek():
+ stack.push(temp_s.pop())
+ temp_s.push(temp)
+
+ while not temp_s.isEmpty():
+ stack.push(temp_s.pop())
+
+ return stack
+
+
+def precedence(op):
+ if op in ('+', '-'):
+ return 1
+ if op in ('*', '/'):
+ return 2
+ return 0
+
+
+def infix_to_postfix(expression):
+ output = []
+ stack = Stack()
+
+ char = expression.split()
+
+ for i in char:
+ if i == '(':
+ stack.push(i)
+ elif i == ')':
+ while not stack.isEmpty() and stack.peek() != '(':
+ output.append(stack.pop())
+ stack.pop()
+ elif is_operator(i):
+ while not stack.isEmpty() and (precedence(stack.peek()) >= precedence(i)):
+ output.append(stack.pop())
+ stack.push(i)
+ else:
+ output.append(i)
+
+ while not stack.isEmpty():
+ output.append(stack.pop())
+
+ return ' '.join(output)
+
+
+def daily_temperatures(temperatures):
+ n = len(temperatures)
+ result = [0] * n
+ stack = Stack()
+
+ for i, current_temp in enumerate(temperatures):
+ while not stack.isEmpty() and temperatures[stack.peek()] < current_temp:
+ index = stack.pop()
+ result[index] = i - index
+ stack.push(i)
+
+ return result
+
+def longest_valid_parentheses(str):
+ stack = Stack()
+ stack.push(-1)
+ max_length = 0
+
+ for i, char in enumerate(str):
+ if char == '(':
+ stack.push(i)
+ else:
+ stack.pop()
+ if stack.isEmpty():
+ stack.push(i)
+ else:
+ max_length = max(max_length, i - stack.peek())
+
+ return max_length