From 0f40c563d79ab019c9b99e460d2a5b264b41ce5c Mon Sep 17 00:00:00 2001 From: SinnoLn Date: Sat, 10 Oct 2026 17:56:47 +0900 Subject: [PATCH 1/2] 20. Valid Parentheses --- .../20. Valid Parentheses.java" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "leetcode3/\354\235\264\354\247\204\355\235\254/20. Valid Parentheses.java" diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/20. Valid Parentheses.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/20. Valid Parentheses.java" new file mode 100644 index 00000000..1f1f9999 --- /dev/null +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/20. Valid Parentheses.java" @@ -0,0 +1,40 @@ +/* + +1. 아이디어 : stack 구조 성질 활용 + push, pop을 하며 괄호가 올바르게 배치됐는지 체크 + +2. 시간복잡도 : O(N) + +3. 자료구조/알고리즘 : stack + + */ + +class Solution { + public boolean isValid(String s) { + // stack 구조 활용 + + Deque stack = new ArrayDeque<>(); + + for(int i=0; i Date: Sat, 10 Oct 2026 17:58:52 +0900 Subject: [PATCH 2/2] 593. Valid Square --- .../593. Valid Square.java" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "leetcode3/\354\235\264\354\247\204\355\235\254/593. Valid Square.java" diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/593. Valid Square.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/593. Valid Square.java" new file mode 100644 index 00000000..3571df2f --- /dev/null +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/593. Valid Square.java" @@ -0,0 +1,38 @@ +/* +1. 아이디어: 4점이 주어졌을때 정사각형 판별 - 정사각형의 성질 활용 + 1. 4변의 길이가 같다 + 2. 두 대각선의 길이가 같다 + +2. 시간복잡도: O(1); + +3. 자료구조/알고리즘: 정렬, 정사각형 성질(수학) + +*/ + +class Solution { + public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) { + + int[] dis = new int[6]; + dis[0] = dist(p1, p2); + dis[1] = dist(p1, p3); + dis[2] = dist(p1, p4); + dis[3] = dist(p2, p3); + dis[4] = dist(p2, p4); + dis[5] = dist(p3, p4); + + + // 마지막 2개 원소가 대각선 + Arrays.sort(dis); + + if(dis[0] == 0) return false; + + return dis[0] == dis[1] && + dis[1] == dis[2] && + dis[2] == dis[3] && + dis[4] == dis[5]; + } + + private int dist(int[] a, int[] b) { + return (a[0] - b[0]) * (a[0] - b[0]) + (a[1] - b[1]) * (a[1] - b[1]); + } +} \ No newline at end of file