From 9100abfdce746ccae5d92faeb79cb68f9caec022 Mon Sep 17 00:00:00 2001 From: ace kim Date: Sun, 23 Nov 2025 03:04:45 +0800 Subject: [PATCH 1/5] Valid Palindrome solution --- valid-palindrome/acious.kt | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 valid-palindrome/acious.kt diff --git a/valid-palindrome/acious.kt b/valid-palindrome/acious.kt new file mode 100644 index 0000000000..8c99a9afa0 --- /dev/null +++ b/valid-palindrome/acious.kt @@ -0,0 +1,43 @@ +class Solution { + fun isPalindrome(s: String): Boolean { + // 문장의 길이는 최대 20만 + // 문자열이 공백이면 return true + // for-loop 한턴에 양쪽 끝에서부터 시작. 양쪽 index가 서로 교차되면 return true + // 각각 char이 alphanumeric이 아니면 한칸 더이동. + // 영문 대문자면 영문 소문자로 치환. + // - 양쪽 끝의 char를 비교해서 같으면 양쪽 index를 이동시킴. + // - 양쪽 끝의 char를 비교해서 같지않으면 return false + // 시간복잡도 : O(n/2) + // 공간복잡도 : O(n) + if (s.isEmpty()) { + return true + } + + var left = 0 + var right = s.length - 1 + + while (left <= right) { // 서로 교차하기 전까지만 비교하면 됨 (<= 대신 < 사용 가능) + + // 1. Char가 영문자나 숫자가 아닌지 확인 + if (!s[left].isLetterOrDigit()) { + left += 1 + continue + } + + if (!s[right].isLetterOrDigit()) { + right -= 1 + continue + } + + // 2. 대소문자 통일 후 비교 + if (s[left].lowercaseChar() != s[right].lowercaseChar()) { + return false + } else { + left += 1 + right -= 1 + } + } + + return true + } +} \ No newline at end of file From d8de1950c223349a77f1ae886ff884c7874ed8d9 Mon Sep 17 00:00:00 2001 From: ace kim Date: Sun, 23 Nov 2025 03:20:32 +0800 Subject: [PATCH 2/5] Valid Palindrome solution --- valid-palindrome/acious.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/valid-palindrome/acious.kt b/valid-palindrome/acious.kt index 8c99a9afa0..c628a1705e 100644 --- a/valid-palindrome/acious.kt +++ b/valid-palindrome/acious.kt @@ -8,7 +8,7 @@ class Solution { // - 양쪽 끝의 char를 비교해서 같으면 양쪽 index를 이동시킴. // - 양쪽 끝의 char를 비교해서 같지않으면 return false // 시간복잡도 : O(n/2) - // 공간복잡도 : O(n) + // 공간복잡도 : O(1) if (s.isEmpty()) { return true } @@ -40,4 +40,4 @@ class Solution { return true } -} \ No newline at end of file +} From 80679025c412f5d4bf925663c67cf3c22dfb0880 Mon Sep 17 00:00:00 2001 From: ace kim Date: Sun, 23 Nov 2025 03:54:51 +0800 Subject: [PATCH 3/5] number of 1bits solutions --- number-of-1-bits/acious.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 number-of-1-bits/acious.kt diff --git a/number-of-1-bits/acious.kt b/number-of-1-bits/acious.kt new file mode 100644 index 0000000000..b572201603 --- /dev/null +++ b/number-of-1-bits/acious.kt @@ -0,0 +1,19 @@ +class Solution { + fun hammingWeight(n: Int): Int { + // 2^31 = 1,073,741,823 + // 몫 : dividend + // 한텀당 n을 2로 나눠서 몫과 나머지를 구해냄. 나머지가 1이면 result에 +=1, 나머지가 0이면 result에 변화없음. + // 몫이 0으로 떨어지면 연산이 끝나고 result 반환 + // 시간 복잡도 : n이 최대 2^31이고 n이 커짐에 따라 최대 31번 반복문이 도므로 O(1) + // 공간복잡도 : O(1) + var dividend = n + var result = 0 + while (dividend != 0) { + if (dividend % 2 == 1) { + result+=1 + } + dividend = dividend/2 + } + return result + } +} From 26ec4cd52ef7d7bf9c18e70147f5ccf9aa6ddfc8 Mon Sep 17 00:00:00 2001 From: ace kim Date: Sat, 29 Nov 2025 20:58:09 +0800 Subject: [PATCH 4/5] maximum-subarray solution --- maximum-subarray/acious.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 maximum-subarray/acious.kt diff --git a/maximum-subarray/acious.kt b/maximum-subarray/acious.kt new file mode 100644 index 0000000000..2ff8c1ec5c --- /dev/null +++ b/maximum-subarray/acious.kt @@ -0,0 +1,13 @@ +class Solution { + fun maxSubArray(nums: IntArray): Int { + var maxSum = nums[0] + var sum = 0 + + for(num in nums) { + sum = max(sum+num, num) + maxSum = max(sum, maxSum) + } + + return maxSum + } +} \ No newline at end of file From 946129e7eae83f4ea688d2386cf879db3879c1a9 Mon Sep 17 00:00:00 2001 From: ace kim Date: Sat, 29 Nov 2025 20:59:32 +0800 Subject: [PATCH 5/5] maximum-subarray solution --- maximum-subarray/acious.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maximum-subarray/acious.kt b/maximum-subarray/acious.kt index 2ff8c1ec5c..dabc00af83 100644 --- a/maximum-subarray/acious.kt +++ b/maximum-subarray/acious.kt @@ -10,4 +10,4 @@ class Solution { return maxSum } -} \ No newline at end of file +}