안녕하세요 :) 오랜만에 블로그 포스팅을 해보려 합니다. 그동안 포스팅을 하지 않은 구질구질한 이유는? 사실 요 몇 주 롤체토스에 빠졌다가 실버4 찍고 관뒀습니다. 무튼... 오늘 공부해 볼 주제는 공간복잡도(space complexity) 입니다. 공간복잡도란? 프로그램을 실행시킨 후 완료하는데 필요로 하는 자원 공간의 양입니다. 공간복잡도는 총 공간요구 = 고정 공간 요구 + 가변 공간 요구로 나타낼 수 있고 수식으로는 S(P) = c + Sp(n)으로 표기합니다. 공간복잡도는 어떻게 표기하느냐? 공간복잡도는 Big-O표기법을 사용합니다. 시간복잡도를 표현할 때도 Big-O 사용했었죠? Big-O는 알고리즘의 성능을 수학적으로 표현해주는 표기법이기 때문에 시간복잡도 공간복잡도 모두 Big-O 표기법을..
Fiddler Everywhere 아래 경로에 들어가서 Download Free Trial을 눌러줍니다. https://www.telerik.com/fiddler/fiddler-everywhere Email과 Country는 필수 항목이니 작성해줍니다. 그러면 dmg파일이 설치되는데 응용프로그램화 해줍니다. 피들러를 열어줍니다. 피들러 설정을 눌러서 포트 번호를 확인합니다. 8866 메모 다음 맥북 IP주소를 확인해줍니다. (IP주소 확인하는 방법은 시스템 환경설정 > 네트워크 에서 확인할 수 있습니다.) 여기까지 맥북에서 확인할 것은 끝났고 디바이스에서 HTTP 프록시를 구성해줍니다. 설정 > Wi-Fi 에서 내가 현재 연결되어 있는 Wi-Fi를 눌러줍니다. https://docs.telerik.com..
클래스 싱글톤과 구조체 싱글톤을 차이점을 알아보겠습니다. 비교를 하기 위해 먼저 클래스 싱글톤을 만들어줍니다. private init()을 해준 이유는 https://hyerios.tistory.com/23 해당 포스팅에서도 언급했지만 다른 곳에서 또 다른 인스턴스를 생성하지 못하도록 하기 위함입니다. (싱글톤 특성) 그리고 value변수를 생성하고 0으로 초기화해줍니다. currentValue함수를 생성해 현재 value값을 출력해주도록 합니다. class ClassSingleton { static let shared = ClassSingleton() private init() {} var value = 0 func currentValue() { print("class Singleton: \(value..
알고리즘 문제 풀면서 성능 비교하는 건 아주 중요하죠! 애용하는 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로 바꿀 수 있다면..
오늘은 83번 문제를 풀어보겠습니다. EASY고 현재는 47.9%의 성공률을 보이네요. 오늘 주제는 Linked List입니다. 정렬된 링크드 리스트의 헤드가 주어지면, 중복되는 것들을 지워서 각 원소들이 한 번씩만 나타나게 해라. 주어진 예시들을 보겠습니다. 1번 예시를 보면, 1이 2번 나왔잖아요. 그래서 1노드 한 개를 지워줍니다. 지운 결과는 [1,2]이 됩니다. 2번 예시를 보면, 1이 2번 2가 1번, 3이 2번 나왔습니다. 그럼 1노드 1개 지워주고 3노드 1개 지워줘야겠죠. 지운 결과는 [1,2,3]이 됩니다. 문제에서 주어진 제약조건들을 살펴보면 노드의 수, node의 value값, 정렬 보장이 적혀있네요. 마지막 문장이 가장 눈에 띄네요. 일단 정렬이 보장되니까 이 문제는 쉽게 접근할 ..
이것도 일하다가 발견한 ^^,,, 신기한 것 (아래 코드는 바로 직전 포스트 한 코드 재탕) class ViewController: UIViewController { private let slider: UISlider = { let slider: UISlider = UISlider() slider.translatesAutoresizingMaskIntoConstraints = false slider.minimumValue = 0 slider.maximumValue = 100 slider.value = 0 slider.addTarget(self, action: #selector(sliderValueChanged(sender:)), for: .valueChanged) return slider }() overr..
일하다가 발견한 버그...? 일단 UISlider를 사용해야 했는데 어떠한 상황에 따라 UIControl의 isEnabled속성을 건드려야 했음. (참고로 UIControl은 UIView를 상속한 사용자의 의도를 전달하는 시각적인 요소들의 기반이 되는 클래스이고 UIButton, UISlider 등이 UIControl클래스를 상속해서 사용되고 있음) 오늘 사용해볼 프로퍼티 isEnabled isEnabled프로퍼티는 디폴트는 YES이고 만약 NO로 설정하면 터치 이벤트를 무시하고 서브클래스들은 다르게 그려질 거임. 일단 여기까지 오케이. 1. isEnabled 컨트롤이 활성화 상태인지를 나타내는 BOOL값이고 {get set}이라 직접적으로 수정 가능한 프로퍼티임. 이 값을 true로 설정하면 컨트롤 활..
- Total
- Today
- Yesterday
- swiftUI
- 스위프트
- iOS SwiftUI
- objc
- Deep learning
- SWIFT
- 책
- ReactiveX
- Xcode
- wwdc
- 독서
- 문자열
- leetcode
- swift5
- rxswift
- stanford SwiftUI
- 알고리즘
- ios
- ARC
- 머신러닝
- objective-c
- Animation
- RX
- 책 후기
- string
- Algorithm
- 스위프트UI
- 애니메이션
- 딥러닝
- 책 추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |