diff --git a/container-with-most-water/hjeomdev.java b/container-with-most-water/hjeomdev.java new file mode 100644 index 000000000..04598c532 --- /dev/null +++ b/container-with-most-water/hjeomdev.java @@ -0,0 +1,26 @@ +class Solution { + public int maxArea(int[] height) { + // 높이 순서대로 정렬해서, 처음부터 2개씩 잡아서 너비를 구하는 방법 => n^2 + // 해설 참고함. -> 포인터 2개를 둬서 양측에서 시작해서 중간에 만날때까지 최대값을 구한다 + int s = 0; + int e = height.length - 1; + int result = 0; + + while(s < e) { + int h = height[s] < height[e] ? height[s] : height[e]; + int w = e - s; + int cur = h * w; + if (cur > result) { + result = cur; + } + + if (height[s] < height[e]) { + s++; + } else { + e--; + } + // System.out.println(s + " " + e + " " + cur); + } + return result; + } +} diff --git a/valid-parentheses/hjeomdev.java b/valid-parentheses/hjeomdev.java new file mode 100644 index 000000000..d636fa60b --- /dev/null +++ b/valid-parentheses/hjeomdev.java @@ -0,0 +1,25 @@ +class Solution { + public boolean isValid(String s) { + // 스택... 머리속에 떠오르는 생각은 있는데 정리가 안됌.. + // 해설 읽음 + + Map parens = new HashMap<>(); + parens.put('(', ')'); + parens.put('{', '}'); + parens.put('[', ']'); + + Stack stack = new Stack<>(); + + for(char c : s.toCharArray()) { + if (parens.containsKey(c)) { + stack.push(c); + } else { + if (stack.isEmpty() || c != parens.get(stack.pop())) { + return false; + } + } + } + + return stack.isEmpty(); + } +}