From 20dc9f68150b10401437eff370cf1ed1fd063cb3 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Mon, 28 Jul 2025 15:56:42 +0900 Subject: [PATCH 1/3] solve valid anangram problem --- valid-anagram/sora0319.java | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/valid-anagram/sora0319.java b/valid-anagram/sora0319.java index c758956e3..d6dd56e12 100644 --- a/valid-anagram/sora0319.java +++ b/valid-anagram/sora0319.java @@ -1,3 +1,30 @@ +// Map을 사용한 버전 +class Solution { + public boolean isAnagram(String s, String t) { + if(s.length() != t.length()) return false; + + Map alphabet = new HashMap<>(); + + for(char c : s.toCharArray()){ + if(!alphabet.containsKey(c)){ + alphabet.put(c, 0); + } + alphabet.put(c, alphabet.get(c) + 1); + } + + for(char c : t.toCharArray()){ + if(!alphabet.containsKey(c)) return false; + if(alphabet.get(c) == 0) return false; + + alphabet.put(c, alphabet.get(c)-1); + } + + return true; + } +} + + +// 초기 버전 class Solution { public boolean isAnagram(String s, String t) { int[] character = new int[26]; @@ -17,4 +44,9 @@ public boolean isAnagram(String s, String t) { } } - +/* +Map, 배열 모두 평균시간복잡도는 O(1)이지만, +배열이 직접 접근 방식이고, Map은 Hash를 사용하여서 배열 보다는 시간이 더 걸린다 +배열 사용시 4ms +Map 사용 시 17ms +*/ From 3ea19588be312a78a1da465c7aad06ec31f940c2 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Fri, 1 Aug 2025 17:35:30 +0900 Subject: [PATCH 2/3] solve climbing stairs --- climbing-stairs/sora0319.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/climbing-stairs/sora0319.java b/climbing-stairs/sora0319.java index f226e4bce..e4080f1ff 100644 --- a/climbing-stairs/sora0319.java +++ b/climbing-stairs/sora0319.java @@ -1,3 +1,25 @@ +// 공간 복잡도를 줄인 2번째 버전 +class Solution { + public int climbStairs(int n) { + int back = 1; + int front = 2; + int target = 0; + + if (n == 1) return back; + if (n == 2) return front; + + for(int i = 1; i < n-1; i++){ + target = front + back; + back = front; + front = target; + } + + return target; + } +} + + +// 초기 버전 class Solution { public int climbStairs(int n) { int[] stairs = new int[n+1]; @@ -12,3 +34,8 @@ public int climbStairs(int n) { } } +// 1 : 1 +// 2 : [1] + 1, 2 1+1 2 2개 +// 3 : [2-1] + 1, [2-2] + 1, [1] + 2 1+1+1 2+1 1+2 3개 +// 4 : [3-1] + 1, [3-2] + 1, [3-3] + 1 1+1+1+1 2+1+1 1+2+1 1+1+2 2+2 5개 +// 5 : 1+1+1+1+1 2+1+1+1 1+2+1+1 1+1+2+1 1+1+1+2 2+2+1 2+1+2 1+2+2 8개 \ No newline at end of file From 0711ef479c68a258d6106945f4ca1d8909852f4e Mon Sep 17 00:00:00 2001 From: sora0319 Date: Fri, 1 Aug 2025 17:39:45 +0900 Subject: [PATCH 3/3] add inline --- climbing-stairs/sora0319.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/climbing-stairs/sora0319.java b/climbing-stairs/sora0319.java index e4080f1ff..37f94b294 100644 --- a/climbing-stairs/sora0319.java +++ b/climbing-stairs/sora0319.java @@ -38,4 +38,5 @@ public int climbStairs(int n) { // 2 : [1] + 1, 2 1+1 2 2개 // 3 : [2-1] + 1, [2-2] + 1, [1] + 2 1+1+1 2+1 1+2 3개 // 4 : [3-1] + 1, [3-2] + 1, [3-3] + 1 1+1+1+1 2+1+1 1+2+1 1+1+2 2+2 5개 -// 5 : 1+1+1+1+1 2+1+1+1 1+2+1+1 1+1+2+1 1+1+1+2 2+2+1 2+1+2 1+2+2 8개 \ No newline at end of file +// 5 : 1+1+1+1+1 2+1+1+1 1+2+1+1 1+1+2+1 1+1+1+2 2+2+1 2+1+2 1+2+2 8개 +