리팩토링 결과 발표
·
iOS
👋 들어가기 전회사에서 굵직한 스프린트가 하나 마무리되어 오늘은 오랜만에회고를 하는 시간을 가지려한다. 회고 내용은 바로 어제 iOS 개발 팀 앞에서 발표한 나의 리팩토링 경험이다.리팩토링을 하며 배운점과 느낀점을 중심으로 돌아보려한다.✊무엇을 리팩토링 했는가?12월 10일에 일을 시작한 나의 첫 스프린트 임무는 MVP를 증명할 수 있는 앱을 2주만에찍어내야했다. 하지만 크게 3가지 문제가 있었다.  1. 미리 짜여져있는 코드미리 짜여있는 코드를 그대로 가져가야하는 지, 내가 다시 짜야하는 지 결정이 빠르게 되지 않았다.게다가 짜여있는 코드 조차 iOS개발을 주로 하신분이 아니라 코드를 이해하는데도 생각보다 오래걸렸다. 2. 자신없는 UI Framework UIKit을 자주 사용했던 나와 달리 미리 짜..
Search in Rotated Sorted Array
·
PS/LeetCode
문제https://leetcode.com/problems/search-in-rotated-sorted-array/description/입력1 결과ans: Int = target이 위치한 인덱스, 먄약 없다면 -1해석이전 문제와 비슷한 이분탐색 문제지만 오름차순의 배열이 회전되어 있어 한번 더 조건을 걸어줘야한다. 그 조건은 이분탐색의 필수적인 조건인 정렬 여부, 즉 mid를 중심으로 정렬이 올바르게 되어있는 구간인가 아닌가를  판별 또한 mid를 통해 찾을 것이기 때문에, while문의 조건이 가 아닌 된다.코드class Solution { func search(_ nums: [Int], _ target: Int) -> Int { let n = nums.count var ..
Find Minimum in Rotated Sorted Array
·
PS/LeetCode
문제https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/입력n == nums.length1 결과ans: Int = 배열의 최솟값해석정렬이 됐지만 회전까지 들어가 있어 문제의 본질을 파악하는데 함정을 파뒀다.하지만 시간 복잡도 제약이 O(logn)인 것을 보고 이분 탐색이라는 것을 눈치 챌 수 있었다. mid를 기준으로 right 값이 큰지 작은 지를 판단하여크다면 오른쪽 부분은 버려주는 형식으로 진행코드class Solution { func findMin(_ nums: [Int]) -> Int { let n = nums.count if n == 1{ return n..
Maximum Product Subarray
·
PS/LeetCode
문제https://leetcode.com/problems/maximum-product-subarray/description/입력1 결과ans: Int = 곱 부분 배열의 최댓값해석이전 maxSubarray는 단순 합이라, 흐름이 하나였지만곱은 말 그대로 음수와 양수에 따른 흐름이 2개이므로 변수가 하나 더 필요했다.그래서 음수를 고려한 최대 음수 변수와, 최대 양수 변수를 계속 가져가며 반복마다 갱신한다.코드class Solution { func maxProduct(_ nums: [Int]) -> Int { let n = nums.count if n == 1 { return nums[0] } var minProduct = nums..
패키지 만들기
·
iOS
👋 들어가기 전나만의 오픈소스를 만들어 다른 사람에게 도움이 될만한 경험을 제공하는게 꿈이었다.현재 프로젝트를 하며 작지만 꽤나 귀찮은 불편함을 느꼈는데 이 아이디어를 나의 첫 오픈 소스 패키지로 활용하면 재밌겠다라는 생각이 들었다. 이번 시간에는 패키지를 만들며 겪는 과정과 어려움을 정리해보려한다. 드가자 ~!✊패키지 생성하기패키지 생성은 생각보다 어렵지 않았다.Xcode -> File -> Packag를 순서대로 누르자. 이후 Library를 선택 후 Test 파일 여부와 Packag이름을 써주면.. 짜잔 패키지 만들기 성공!☝️구성말했던 것 처럼 나의 첫 패키지는 굉장히 간단하기 때문에패키지를 만들 때 거치는 과정이 굉장히 간단해서 구성을 살펴보는건 공식 패키지를 보고 배워보자. 우리가 살펴볼 공..
Maximum Subarray
·
PS/LeetCode
문제https://leetcode.com/problems/maximum-subarray/description/입력1 결과ans: Int = 가장 큰 부분수열의 합해석누적합이 현재 값보다 작으면, 이전 누적합을 버리고 그렇지 않으면 계속 누적한다.이 때 누적할 때마다 이전의 최대값과 계속 비교해서 저장한다.코드class Solution { func maxSubArray(_ nums: [Int]) -> Int { let len = nums.count var currentMax = nums[0] // 누적합 var ans = nums[0] // 최종 결과 for i in 1..