분류 전체보기(189)
-
[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 -
[Leetcode/Hard] 빗물 트래핑 (42. Trapping Rain Water, Swift)
https://leetcode.com/problems/trapping-rain-water/description/ 🤔 문제 설명각 막대의 너비가 1인 높이를 나타내는 음이 아닌 정수 리스트가 주어지면, 비가 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하세요.height = [0,1,0,2,1,0,1,3,2,1,2,1]// 6 💡 풀이예전 수학 문제에서 이와 비슷한 문제를 본 경험이 떠올랐다.문제를 해결하기 위해 생각한 방법은 두 가지였다.하나는 양끝 지점에서 최댓값을 유지하며 좁혀 들어오는 방법, 또 하나는 앞에서부터 쭉 최댓값을 유지하며 값을 채우는 방법나는 이 중에서 전자의 방법을 사용했다. 전문 용어로 이렇게 양 끝 지점에서 범위를 갈수록 줄이는 방법을 "투 포인터"라고 부른다.일단, 그전에 h..
2024.07.04