SWIFT(87)
-
[Leetcode/Medium] 자신을 제외한 배열의 곱 (238. Product of Array Except Self, Swift)
https://leetcode.com/problems/product-of-array-except-self/description/ 🤔 문제 설명배열을 입력받아 output[i]가 자신을 제외한 나머지 모든 요소의 곱셈 결과가 되도록 출력하세요.숫자의 접두사 또는 접미사의 곱은 32비트 정수에 들어맞는 것을 보장합니다. 단, 나눗셈을 사용하지 않고 O(n) 시간에 실행되는 알고리즘을 작성해야 합니다.nums = [1,2,3,4]// [24, 12, 8, 6] 💡 풀이문제 가장 마지막줄에 나눗셈을 사용할 수 없다는 조건 때문에, 전체 곱을 구해두고 각 요소별로 자기 자신을 나누는 방법은 사용할 수가 없다. 그래서 결국은 누적 곱셈을 이용하는 풀이 방법을 생각했다.우선 입력 리스트 nums 길이에 맞는 re..
2024.07.06 -
[Swift] ARC (Automatic Reference Counting) 완전 정복하기
1️⃣ ARC (Automatic Reference Counting)를 배우기 위해 알아야 하는 기초 개념1. 값 타입 (Call by Value)과 참조 타입 (Call by Reference)값 타입 (Call by Value)은 데이터를 복사해서 전달하는 경우, 참조 타입 (Call by Reference)은 데이터의 메모리 주소를 전달하는 경우이다.클래스(class)는 대표적인 참조 타입이고, 구조체(struct)나 열거형(enum)을 비롯한 Swift의 기본 데이터 타입(Int, Bool, String 등)은 값 타입에 속한다.2. 메모리의 스택 영역 (Stack Area)과 힙 영역 (Heap Area)스택 영역 (Stack)은 함수 호출과 관련된 메모리를 관리하는 메모리 영역이다.함수에서 사..
2024.07.06 -
[Leetcode/Easy] 배열 파티션 1 (561. Array Partition 1, Swift)
https://leetcode.com/problems/array-partition/description/ 🤔 문제 설명2n개의 정수 배열이 주어지면, n개의 묶음 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력하세요.nums = [1,4,3,2]// 4 : min(1, 2) + min(3, 4) = 1 + 3 = 4 💡 풀이# 첫 번째 생각정말 단순하게 생각해보면, 입력받은 nums 배열을 정렬시킨 후 앞에서부터 두 쌍씩 페어를 시켜준 다음, 각 묶음에서 최소값들의 합을 구하면 올바른 답이 도출될 것이다.# 두 번째 생각하지만 생각해보면, 결국 min 함수를 적용하지 않고도 리스트를 정렬시켰다면 인덱스 값에 의해 값을 도출할 수 있다.nums[0], nums[2], nums[4]....값..
2024.07.05 -
[Leetcode/Medium] 세 수의 합 (15. 3Sum, Swift)
https://leetcode.com/problems/3sum/description/ 🤔 문제 설명배열 nums를 입력받아 합으로 0을 만들 수 있는 3개의 요소를 출력하세요.단, 결과 배열에는 동일한 요소가 들어가지 않으며, 중복된 삼중항이 포함되어서는 안 됩니다. nums = [-1,0,1,2,-1,-4]// [[-1,-1,2],[-1,0,1]] 💡 풀이일단 바로 생각나는 것은 반복문 3개를 중첩해서 사용하는 방법이었다.물론 그렇게 해도 올바른 답은 나오겠지만, 그 뻔한 방법 말고 지난번 풀이에서 사용했던 투 포인터 방법을 사용해볼려고 했다.순차적으로 들어온 nums 배열을 반복하면서 값을 하나 빼두고(i) 나머지 뒤의 값을 대상으로 앞 뒤에 포인터를 두어서sum값에 따라 음수라면 왼쪽에 있는 포..
2024.07.05 -
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (7) - 코디네이터 패턴(Coordinator Pattern)
1️⃣ 코디네이터 패턴 (Coordinator Pattern) 왜 (Why?) 쓰는 거야?예전 MVC 글에서도 다룬 적이 있지만, 기본적으로 iOS 개발에서 사용되는 아키텍처의 대표적인 문제는 Massive ViewController, 즉 View와 Controller를 합쳐서 사용하는 ViewController의 책임과 역할이 너무 많다는 것이었다.👇🏻 MVC Pattern 글을 리마인드하고 싶으면, 아래 글을 확인할 것! [Architecture Pattern] 내가 보려고 정리하는 Swift 아키텍처 패턴 (1) - MVC 패턴 (Model-View-Controller)💡 글을 시작하기 전에, 아키텍처 패턴 (Architecture Pattern)이 무엇인지 설명하고 넘어가자면!아키텍처 패턴은..
2024.07.04