Skip to content

Commit 575c4a9

Browse files
authored
Merge pull request #1284 from HISEHOONAN/main
[HISEHOONAN] Week 03 solutions
2 parents 8f6c1f8 + 07ec592 commit 575c4a9

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

combination-sum/HISEHOONAN.swift

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//
2+
// Untitled.swift
3+
// Algorithm
4+
//
5+
// Created by 안세훈 on 4/14/25.
6+
//
7+
8+
class Solution {
9+
func combinationSum(_ candidates: [Int], _ target: Int) -> [[Int]] {
10+
var middleArray : [Int] = [] // 연산중인 배열
11+
var resultArray : [[Int]] = [] // 결과 배열
12+
13+
func recursive(startIndex : Int, Sum : Int){ //재귀함수. 시작index, 합계
14+
if Sum == target{ //합계가 목표와 같다면
15+
resultArray.append(middleArray) //결과 배열로 연산배열 append
16+
return //종료
17+
}
18+
if Sum > target{ // 합계가 목표보다 크다면,
19+
return //그대로 리턴
20+
}
21+
//핵심
22+
for i in startIndex..<candidates.count{ // 인덱스 별로 for loop
23+
middleArray.append(candidates[i]) //연산중인 배열에 startIndex의 원소 추가
24+
recursive(startIndex: i, Sum: Sum+candidates[i]) //재귀실행. i번째 인덱스와, i번째 인덱스의 원소 + 지금까지의 합을 더해서 재귀 함수로 리턴.
25+
middleArray.removeLast() // 백트래킹을 위해 맨 뒤 원소 삭제.
26+
}
27+
}
28+
29+
recursive(startIndex: 0, Sum: 0) // 최초 재귀함수 호출. 초기화를 위해 0번째 인덱스와 합계 0부터 시작
30+
print(resultArray) // 디버깅을 위한 출력문
31+
return resultArray // 리턴은 결과 배열
32+
}
33+
}

number-of-1-bits/HISEHOONAN.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//
2+
// Untitled.swift
3+
// Algorithm
4+
//
5+
// Created by 안세훈 on 4/14/25.
6+
//
7+
8+
class Solution {
9+
func hammingWeight(_ n: Int) -> Int {
10+
var num = n //n을 저장할 변수
11+
var remain = 0 //나머지를 저장할 변수
12+
var array : [Int] = [] //이진법으로 변환한 수를 저장할 배열
13+
14+
while num > 0{ //num이 0보다 클때만 반복
15+
remain = num % 2 //num을 2로 나눈 나머지를 저장
16+
num = num / 2 //num을 2로 나눈 몫을 저장
17+
array.append(remain) //array에 나머지를 저장
18+
}
19+
20+
return array.filter{$0 == 1}.count //array에 1만 추출한 후 그 개수 리턴
21+
}
22+
}

valid-palindrome/HISEHOONAN.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// Untitled.swift
3+
// Algorithm
4+
//
5+
// Created by 안세훈 on 4/14/25.
6+
//
7+
8+
class Solution {
9+
func isPalindrome(_ s: String) -> Bool {
10+
var validS = s.lowercased().filter{$0.isNumber == true || $0.isLetter == true}
11+
//s를 모두 소문자로 변환 후 숫자 or 문자가 true인 문자만 validS에 배열로 추출.
12+
13+
if validS == String(validS.reversed()){ //validS와 뒤집은 것과 같다면 true 아니면 false
14+
return true
15+
}else{
16+
return false
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)