From f3e99003df27306d81f65d7e9d522988acf398c4 Mon Sep 17 00:00:00 2001 From: tigermint Date: Sat, 15 Aug 2026 18:54:00 +0900 Subject: [PATCH 1/2] feat: WEEK 08 solution (reverse-bits) --- reverse-bits/tigermint.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 reverse-bits/tigermint.kt diff --git a/reverse-bits/tigermint.kt b/reverse-bits/tigermint.kt new file mode 100644 index 0000000000..19b81e4abb --- /dev/null +++ b/reverse-bits/tigermint.kt @@ -0,0 +1,15 @@ +/** +TC: O(32) = O(1) +SC: O(1) + */ +class Solution { + fun reverseBits(n: Int): Int { + var result = 0 + var num = n + repeat(32) { + result = (result shl 1) or (num and 1) + num = num ushr 1 + } + return result + } +} From 8546a24595e64a64e673d12301070ef796871565 Mon Sep 17 00:00:00 2001 From: tigermint Date: Sat, 15 Aug 2026 18:54:00 +0900 Subject: [PATCH 2/2] feat: WEEK 08 solution (longest-repeating-character-replacement) --- .../tigermint.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 longest-repeating-character-replacement/tigermint.kt diff --git a/longest-repeating-character-replacement/tigermint.kt b/longest-repeating-character-replacement/tigermint.kt new file mode 100644 index 0000000000..8a756a13e8 --- /dev/null +++ b/longest-repeating-character-replacement/tigermint.kt @@ -0,0 +1,27 @@ +/** +TC: O(26n) = O(n) +SC: O(26) = O(1) + */ +class Solution { + fun characterReplacement(s: String, k: Int): Int { + var left = 0 + val charToCount = mutableMapOf() + var maxFrequency = 0 + + for (right in s.indices) { + val added = s[right] + charToCount[added] = (charToCount[added] ?: 0) + 1 + + // 교체 횟수가 k를 넘으면 왼쪽을 당겨 윈도우 축소 + while ((right - left + 1) - charToCount.values.max() > k) { + val removed = s[left] + charToCount[removed] = charToCount.getValue(removed) - 1 + left++ + } + + maxFrequency = maxOf(maxFrequency, right - left + 1) + } + + return maxFrequency + } +}