🔴 문제 🔵 풀이 1 - 논리 부정 연산자(!), contains, filter, reduce numbers를 0부터 9까지 숫자와 하나하나 비교하지 않고, 한 번에 비교하는 방법이 있을까 싶어 계속 검색했다. 그러다가 요소가 시퀀스에 포함되어 있는지 비교하는 논리 함수인 contains(_:)를 발견했다. (레나참나 블로그, 호야 블로그, 개발자 소들이 블로그) 그런데 문제는, numbers에 포함되지 "않는" 숫자를 필터링해야 한다는 것이다. Swift 에서 논리 부정을 어떻게 하는지 몰라 검색하고 검색하다가 '!'를 논리식 앞에 붙이면 된다는 것을 알게 되었다. => !논리식 (하늘하늘 블로그) func solution(_ numbers:[Int]) -> Int { let allNums = Ar..
📌 prefix(_:) : 앞에서부터 n글자 추출 1. 정의: collection의 요소를 앞에서부터 n개까지 담은 subsequence를 반환한다. 2. 파라미터: maxLength 파라미터는 최대로 반환할 문자열 길이를 의미한다. 0 이상의 수이어야 한다. 3. maxLength가 collection의 요소 수보다 큰 경우, 결과값은 collection의 모든 요소를 포함한다. let numbers = [1, 2, 3, 4, 5] print(numbers.prefix(2)) // Prints "[1, 2]" print(numbers.prefix(10)) // Prints "[1, 2, 3, 4, 5]" 4. 예제 var strFeelings = "happy, sad, frustrated" var ar..
🔴 문제 🔵 풀이 1 - for...in, enumerated() 활용 func solution1(_ phone_number:String) -> String { let fourthIndex = phone_number.count - 4 var blurredNumber: String = "" for (i, num) in phone_number.enumerated() { if i < fourthIndex { blurredNumber += "*" } else { blurredNumber += String(num) } } return blurredNumber } solution1("01012345678") // "*******5678" solution1("1234") // "1234" * enumerated()란..
🔴 문제 🔵 풀이 1 - enumerated() result라는 변수를 생성하고, for...in loop를 돌리며 signs[idx]가 true일 땐 result에 더하고, false일 땐 뺀다. * enumerated() 문법 : [Swift|문법] index 찾기 메소드 - enumerated()... import Foundation func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int { var result: Int = 0 for (idx, value) in absolutes.enumerated() { if signs[idx] { result += value } else { result -= value } } return result } 🔵 풀이 2 ..
🔴 문제 🔵 풀이 1 - for...in, append, sorted for...in 구문에서 element를 divisor로 나눠보고, 나누어 떨어지는 element가 있다면 새로운 배열에 append하는 방식으로 풀면 될 것 같다. func solution(_ arr:[Int], _ divisor:Int) -> [Int] { var newArr: [Int] = [] for i in arr { if i % divisor == 0 { newArr.append(i) } } if newArr == [] { return [-1] } return newArr.sorted() // 오름차순으로 정렬하여 반환 } 🔵 풀이 2 - filter, sorted 특정 조건을 만족하는 element를 필터링하여 배열을 반환..
참고: 함수 기본(테크연), 클로저(개발자 소들이) 🟥 클로저란? ▶️ 정의 및 문법 - 정의: "어떤 태스크를 수행하기 위한 코드 블럭"으로, 함수와 유사하다. - 문법: { 클로저 선언부 in 클로저 실행부 } 의 형태로 작성한다. 클로져 선언부: 파라미터와 리턴타입 명시 클로져 실행부: 실행 코드 작성 { (parameters) -> returnType in statements } - Swift에서는 클로져, 함수를 타입으로 사용할 수 있다. -> 따라서, 변수에 할당할 수 있고, 다른 함수 파라미터로 전달할 수도 있다. (aka. First Citizen) ▶️ 함수 vs 클로저 함수는 이름이 정의되지만, 클로저는 이름이 없다. "hello"를 출력하는 함수와 클로저를 다음과 같이 작성하고 실행할..