SWIFT(87)
-
[Leetcode/Easy] 두 정렬 리스트의 병합 (21. Merge Two Sorted Lists, Swift)
https://leetcode.com/problems/merge-two-sorted-lists/description/ 🤔 문제 설명두 개의 정렬된 연결 리스트 list1과 list2가 주어진다.이때, 처음 두 연결 리스트의 노드를 서로 연결하여 하나의 연결 리스트로 만들어라 (병합해라).list1 = [1,2,4], list2 = [1,3,4]// [1,1,2,3,4,4] 💡 풀이단순하게 두 연결 리스트가 모두 nil이 아닐 때까지는 각 연결 리스트의 앞 값을 기반으로 비교하고, 둘 중 더 작은 값을 반환할 병합 리스트에 연결하고, (연결해줄 병합 리스트와 + 사용한 연결 리스트를) 한 칸 전진시키는 방식으로 단순하게 연결해나가면 된다.둘 중 하나의 연결 리스트가 nil이 되는 순간 (혹은 연결 리스..
2024.07.09 -
[Swift] [weak self] 이젠 제대로 알고 사용하자! (feat. ARC 2탄)
아직 ARC 1탄 글을 읽지 않고 오셨다면, 아래 링크로 넘어가서 읽고 오길 권장합니다:) [Swift] ARC (Automatic Reference Counting) 완전 정복하기1️⃣ ARC (Automatic Reference Counting)를 배우기 위해 알아야 하는 기초 개념1. 값 타입 (Call by Value)과 참조 타입 (Call by Reference)값 타입 (Call by Value)은 데이터를 복사해서 전달하는 경우, 참조 타입 (Callmini-min-dev.tistory.com 1️⃣ 클로저(Closure)에서도 발생하는 강한 참조 사이클(Strong Reference Cycle) 문제지난 [Swift] ARC (Automatic Reference Counting) 완전 정..
2024.07.08 -
[Leetcode/Easy] 역순 연결 리스트 (206. Reverse Linked List, Swift)
https://leetcode.com/problems/reverse-linked-list/ 🤔 문제 설명연결 리스트를 뒤집어라.head = [1,2,3,4,5]// [5,4,3,2,1] 💡 풀이 : 연결 리스트 추적하면서 뒤집기첫 번째 떠오른 방법은 연결 리스트를 처음부터 순차적으로 반복하면서 거꾸로 연결시키는 방법이다.ListNode의 next에 계속 새로운 값을 추가시키는 것이 아니라, 기존 값을 새로운 next에 계속 할당하는 (= 앞으로 계속 연결하는) 방법을 사용했다고 생각하면 되겠다.현재 값에 대한 새로운 노드 생성하기 (newNode = ListNode(node.val, rev)) 새로운 노드 뒤에 기존 노드 연결하기 (rev = newNode)순서대로 반복해야 하니까 다음 노드로 연결하..
2024.07.07 -
[Leetcode/Easy] 팰린드롬 연결 리스트 (234. Palindrome Linked List, Swift)
https://leetcode.com/problems/palindrome-linked-list/submissions/1312234161/ 🤔 문제 설명연결 리스트가 팰린드롬 구조인지 판별하라.팰린드롬에 대한 설명은 2024.06.27 - [Algorithm] - [Leetcode/Easy] 유효한 팰린드롬 (125. Valid Palindrome, Swift) 글 참조단, 노드 값의 범위는 다음과 같다. (0 head = [1,2,2,1]// true 💡 풀이 1 : Linked List를 Array로 변환해서 풀기 해당 문제는 입력값이 단일 연결 리스트(Singly-Linked List) 형태로 들어오기 때문에 Swift 문법에서 어떻게 사용하는지를 살펴봐야 한다.연결 리스트(Linked List)..
2024.07.07 -
[Leetcode/Easy] 주식을 사고팔기 가장 좋은 시점 (121. Best Time to Buy and Sell Stock, Swift)
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/ 🤔 문제 설명prices[i]는 지정된 i 날의 주식 가격을 포함하고 있는 리스트입니다.여러분은 한 주식을 살 날을 선택하고 그 주식을 팔기 위해 미래에 다른 날을 선택함으로써 여러분의 이익을 극대화하고자 합니다.이 거래에서 얻을 수 있는 최대 이익을 반환하세요. 이익을 얻을 수 없으면 0을 반환하십시오.[7,1,5,3,6,4]// 5 : 2일차 1일 때 사서 5일차 6일 때 팔면, 5의 이익을 얻는다. 💡 풀이주식에서 최대 이익을 얻으려면, 기본 전제는 "최저가"에서 구매해 "최고가" 지점에서 팔아야 한다.그래서 각 시작점을 기준으로 끝에 까지 반복을 돌았을 때 만날..
2024.07.06