From 289b9adc9102241f278e9d38b865bd004137a28a Mon Sep 17 00:00:00 2001 From: kut7728 Date: Tue, 15 Apr 2025 14:24:44 +0900 Subject: [PATCH 1/5] valid-palindrome solved --- valid-palindrome/kut7728.swift | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 valid-palindrome/kut7728.swift diff --git a/valid-palindrome/kut7728.swift b/valid-palindrome/kut7728.swift new file mode 100644 index 000000000..56782937e --- /dev/null +++ b/valid-palindrome/kut7728.swift @@ -0,0 +1,26 @@ +///주어진 문자열에서 문자, 숫자가 아닌 경우를 지우고, 모두 소문자로 바꿨을때 +///앞, 뒤에서 읽었을 때 동일한 경우를 palindrome이라고 부름 +///문자열 s가 주어질때 palindrome이면 true, 아니면 False 리턴하시오 + +class Solution { + func isPalindrome(_ s: String) -> Bool { + let alpList = Set("abcdefghijklmnopqrstuvwxyz0123456789") + + if s == " " { return true } // 공백인 경우 바로 true + + var pureString = s.lowercased().filter { alpList.contains($0) } + + + let reverseString = String(pureString.reversed()) + + if pureString == reverseString { return true } else { return false } + + } + + //.isLetter, .isNumber이라는 끝내주는 메서드가 있었다... + func isPalindrome2(_ s: String) -> Bool { + let s = s.lowercased().filter { $0.isLetter || $0.isNumber } + return s == String(s.reversed()) + } + +} From 5dba61dfa1af0dce77ac108808c1899a61db9704 Mon Sep 17 00:00:00 2001 From: kut7728 Date: Wed, 16 Apr 2025 15:21:07 +0900 Subject: [PATCH 2/5] number-of-1-bits solved --- number-of-1-bits/kut7728.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 number-of-1-bits/kut7728.swift diff --git a/number-of-1-bits/kut7728.swift b/number-of-1-bits/kut7728.swift new file mode 100644 index 000000000..d6801eeff --- /dev/null +++ b/number-of-1-bits/kut7728.swift @@ -0,0 +1,10 @@ +///양의 정수 n이 주어졌을 때, +///이진 표현으로 setbit의 수를 반환하는 함수(해밍 가중치라고도 함)를 작성합니다. +///setbit이란 이진수 중에서 1의 값을 가지는 비트의 갯수 + +class Solution { + func hammingWeight(_ n: Int) -> Int { + let count = String(n, radix: 2).filter { $0 == "1" }.count + return count + } +} From 7285a5cd9b0d3cf8454b4f7da503e12dad29ad70 Mon Sep 17 00:00:00 2001 From: kut7728 Date: Wed, 16 Apr 2025 22:21:54 +0900 Subject: [PATCH 3/5] combination-sum solved --- combination-sum/kut7728.swift | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 combination-sum/kut7728.swift diff --git a/combination-sum/kut7728.swift b/combination-sum/kut7728.swift new file mode 100644 index 000000000..0b8ef57be --- /dev/null +++ b/combination-sum/kut7728.swift @@ -0,0 +1,38 @@ +///고유한 정수배열의 candidate와 목표 정수 target가 주어졌을 때, +///요소들을 더해서 target을 만들수 있는 candidate의 유니크한 조합 목록을 반환합니다. +///- 어떤 순서로든 조합을 반환할 수 있습니다. +///- 후보에서 같은 숫자를 무제한으로 선택할 수 있습니다. +///- 선택한 숫자 중 하나 이상의 빈도가 다른 경우 두 조합은 고유한 조합입니다. +///- 테스트 케이스는 주어진 입력에 대해 합산되는 고유 조합의 수가 150개 미만이 되도록 생성됩니다. +///Ex) candidate [2, 3, 6, 7] target = 7 -> [[2, 2, 3], [7]] + + +class Solution { + func combinationSum(_ candidates: [Int], _ target: Int) -> [[Int]] { + result: [[Int]] = [] + nums: [Int] = [] + + func dfs(_ start: Int, _ total: Int) { + //타겟에 적중하면 result로 복사 + if total == target { + result.append(nums) + return + } + + //합이 타겟보다 크다면 그냥 종료 + if total > target { + return + } + + //start부터 시작하는것은 이전 요소들에 대한 조합은 이미 테스트했기 때문 + for i in start.. Date: Sat, 19 Apr 2025 15:39:31 +0900 Subject: [PATCH 4/5] decode_ways solved --- decode-ways/kut7728.swift | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 decode-ways/kut7728.swift diff --git a/decode-ways/kut7728.swift b/decode-ways/kut7728.swift new file mode 100644 index 000000000..d99f7d589 --- /dev/null +++ b/decode-ways/kut7728.swift @@ -0,0 +1,33 @@ +///정수 문자열 암호문을 습득했고, 1 -> A, 2 -> B ... 25 -> Y, 26 -> Z 이런식으로 해독됨 +///정수 문자열을 어떻게 끊느냐에 따라 해독이 다르게 된다는 점을 고려해서 +///해독 될수 있는 모든 경우의 수를 반환하라, 해독이 안된다면 0을 반환하라 +/// +///EX) s = "12" +///output : 2 -> (1 2) "AB" or (12) "L" + + +class Solution { + func numDecodings(_ s: String) -> Int { + let arr = Array(s) + var memo: [Int:Int] = [arr.count:1] + + func dfs(_ start: Int) -> Int { + if let result = memo[start] { + return result + } + + + if arr[start] == "0" { + memo[start] = 0 + } else if start + 1 < arr.count, Int(String(arr[start...start+1]))! <= 26 { + memo[start] = dfs(start+1) + dfs(start+2) + } else { + memo[start] = dfs(start + 1) + } + + return memo[start]! + } + + return dfs(0) + } +} From 0197816f311baf57f3cdd1725eb8fd6de035bcd6 Mon Sep 17 00:00:00 2001 From: kut7728 Date: Sat, 19 Apr 2025 15:48:06 +0900 Subject: [PATCH 5/5] maximum-subarray solved --- maximum-subarray/kut7728.swift | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 maximum-subarray/kut7728.swift diff --git a/maximum-subarray/kut7728.swift b/maximum-subarray/kut7728.swift new file mode 100644 index 000000000..3d2e2448e --- /dev/null +++ b/maximum-subarray/kut7728.swift @@ -0,0 +1,20 @@ +///53. Maximum Subarray +///정수 배열 Nums가 주어질때, subarray들 중에서 가장 합이 큰걸 구하고 그 합을 반환하라 +///subarray: 비지 않은 연속된 요소들의 배열 + + +class Solution { + func maxSubArray(_ nums: [Int]) -> Int { + guard !nums.isEmpty else { return 0 } + + var currentSum = nums[0] + var maxSum = nums[0] + + for num in nums.dropFirst() { + currentSum = max(num, currentSum + num) + maxSum = max(maxSum, currentSum) + } + + return maxSum + } +}