
안녕하세요 : - )오늘은 제가 자주 사용하는 3가지 Extensions들을 소개하려 합니다 isNotEmpty혹쉬배열, 집합, 딕셔너리의 collection이 비었는지 확인하려면 어떻게 하시나요?isEmpty를 호출해서 사용하시나요????(count == 0은 아니라고 하셈 ,, 이유는 여기에 https://hyerios.tistory.com/27) 그렇다면 비지 않았는지 확인은 어떻게 확인하시나요?!isEmpty 이렇게 하시나요???(count != 0도 아니라고 하셈 ,,) extension Collection { var isNotEmpty: Bool { isEmpty == false }} 저는 collection이 비지 않았을 때를 확인하기 위해서위와 같이 Collectio..

ARC에 대해서 궁금한 게 있어서 공부하다가 WWDC21에 좋은 영상이 있어 정리해봤습니다. 주제는 스위프트의 ARC! 스위프트는 구조체 및 열거형과 같은 강력한 벨류 타입을 제공합니다. 레퍼런스 타입에서 의도치 않게 sharing되는 것의 위험을 피하기 위해서는 벨류 타입을 사용하는 것을 지향해야 합니다. 스위프트에서 클래스는 레퍼런스 타입이며 클래스를 사용하다면? 스위프트는 ARC를 통해 메모리를 관리합니다. 효과적인 코드를 작성하려면 ARC를 이해하는 것이 중요합니다. 스위프트에서 객체의 lifetime은 초기화 시점에서 시작되고 마지막으로 사용될 때 종료됩니다. ARC는 lifetime이 끝난 후 객체 할당을 해제하여 자동으로 메모리를 관리합니다. 또 ARC는 reference count를 추적해..

알고리즘 문제 풀면서 성능 비교하는 건 아주 중요하죠! 애용하는 LeetCode(https://leetcode.com)는 사이트 자체에서 런타임 소요 시간과 메모리 사용량을 보여주지만, LeetCode에 제출하지 않고 알고리즘 성능 비교할 때는 아래 코드를 사용합니다. struct AlgoTimer { private var startTime: TimeInterval = 0.0 private var endTime: TimeInterval = 0.0 // 타이머 시작 mutating func start() { startTime = NSDate().timeIntervalSince1970 } // 타이머 멈춤 mutating func stop() -> TimeInterval { endTime = NSDate()..

오늘은 648번을 풀어보겠습니다. 중간 난이도고 61.0%의 성공률을 보입니다. 그럼 시작 영어에서는 root라는 개념이 있습니다. 이 루트 뒤에 successor가 따라와 더 긴 단어가 될 수 있습니다. 예를 들어 root인 an와 그 뒤에 successor other이 붙으면 새로운 단어 another이 됩니다. 루트들로 구성된 딕셔너리가 주어지고 공백에 따라 분리되는 단어로 구성된 sentence를 root로 바꿔 재구성을 하면 됩니다. 만약 successor가 하나 이상의 root와 교체될 수 있다면 가장 짧은걸 root로 사용하면 됩니다. 즉 sentence안에 successors들이 있는 거고 root로 바꿀 수 있으면 바꾸어 문장을 재구성을 하면 됩니다. 여러 개의 root로 바꿀 수 있다면..

오늘은 18번 문제를 풀어보겠습니다. 중간 난이도고 36.5%의 성공률을 보이네요. 오늘 주제는 Two Pointers입니다. n정수들로 구성된 nums배열이 주어지면, nums[a], nums[b], nums[c], nums[d]는 a,b,c,d는 0이상 n미만이고 a,b,c,d는 별개이고 nums[a], nums[b], nums[c], nums[d]의 합이 target과 같은 유니크한 quadruplets의 배열을 리턴하세요. 순서는 상관없습니다. 예시를 보겠습니다. 1번을 보면 아웃풋으로 나온 각 1차 배열들의 원소를 합치면 타깃이 됩니다. -2 + -1 + 1 + 2 = 0 -2 + 0 + 0 + 2 = 0 -1 + 0 + 0 + 1 = 0 이렇게 타깃으로 되는 배열을 만들어서 리턴해주면 됩니다...

조합은 집합에서 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것입니다. 이전에도 정리를 한 번 한 적이 있지만(https://hyerios.tistory.com/172) 조합은 순서에 상관없이 뽑기만 하면 됩니다. combinations(ofCount: ) 메서드를 사용하면은 컬렉션 요소의 모든 조합의 시퀀스를 반환하며, 각 조합은 원래 컬렉션의 순서대로 표시됩니다. combinations가 만들어지기 전에는 대부분 아래와 같이 구현했습니다. //5개 중에 2개를 뽑는 모든 경우의 수 func combos(elements: ArraySlice, k: Int) -> [[T]] { if k == 0 { return [[]] } guard let first = elements.first el..

안녕하세요. 오늘 풀어볼 문제는 1456번 문제입니다. 중간 난이도이며 55.6%의 성공률을 보입니다. 이 문제는 슬라이딩 윈도우 섹션입니다. 그래서 출제 의도에 맞게 슬라이딩 윈도우 알고리즘을 활용해서 풀어보는 게 좋을 것 같습니다. 슬라이딩 윈도우 알고리즘은 리스트나 배열에서 범위의 값을 비교할 때 유용합니다. 문제를 살펴보겠습니다. 문자열 s와 정수 k가 주어집니다. 크기가 k인 s의 부분 문자열에서의 모음 문자의 최대 수를 반환합니다. 영어에서 모음 문자는 (a, e, i, o, u)입니다. 주어진 예제를 살펴봅시다. 1번 예제를 살펴보면 문자열 "abciiidef"에 k는 3입니다. k가 3이니 substring들의 길이는 모두 3이 되어야 합니다. 0부터 순서대로 가능한 substring을 표..

중복 제거에 대한 알고리즘을 풀어보려 합니다. 중복을 제거하는 방법에 대해서 여러 가지가 존재해서 여러가지 방법을 사용해서 문제를 해결하겠습니다. 오늘 풀 문제는 217번이고 쉬운 난이도고 57%의 성공률을 보이네요. 그렇게 어렵지는 않은 문제인 것 같아요! 먼저 문제를 살펴보겠습니다. 정수형 배열 nums가 주어지고 값이 배열에 적어도 두 번 나타나면 참을 리턴하고 모든 숫자가 고유하다면 거짓을 반환합니다. 즉 중복되는 게 있으면 바로 참을 리턴해주면 됩니다. 1번 예시를 보면 1이 중복되니 참을 리턴해줍니다. 2번 예시를 보면 모든 숫자가 중복되지 않아서 거짓을 리턴해줍니다. 3번 예시를 보면 1이 중복되고 3이 중복되고 4가 중복되고 2가 중복되어 참을 리턴해줍니다. 생각나는 방법이 3가지 있었는데..
- Total
- Today
- Yesterday
- objective-c
- RX
- Xcode
- Algorithm
- 책 후기
- iOS SwiftUI
- 문자열
- ReactiveX
- 머신러닝
- objc
- string
- 애니메이션
- 독서
- 스위프트UI
- Deep learning
- stanford SwiftUI
- wwdc
- 딥러닝
- 알고리즘
- swift5
- ARC
- leetcode
- 책 추천
- 책
- swiftUI
- Animation
- ios
- rxswift
- 스위프트
- SWIFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |