오늘은 1975문제를 풀어보겠습니다. 중간 난이도며 43.9%의 성공률을 보이고 있네요. 문제를 살펴봅시다. n x n 정수 행렬이 주어지고 행렬의 인접한 두 요소를 선택해 각각에 -1을 곱하는 연산을 마음껏 할 수 있습니다. (단 border를 공유하는 경우에만 인접하다고 간주됩니다.) 그렇게 만든 행렬 요소의 합이 최댓값이 된다면 리턴하면 됩니다. 예시를 봅시다. 1번 예시: [1, -1] [-1, 1] 첫 번째 행에 -1을 곱해줍니다. [-1, 1] [-1, 1] 다음 첫 번째 열에 -1을 곱해줍니다. [1, 1] [1, 1] 모든 원소의 합은 4가 되고 최댓값이 됩니다. 2번 예시: [1 ,2, 3] [-1, -2, -3] [1, 2, 3] 두 번째 행에 마지막 두 원소에 -1을 곱해줍니다. [1..
안녕하세요 :) 오랜만에 블로그 포스팅을 해보려 합니다. 그동안 포스팅을 하지 않은 구질구질한 이유는? 사실 요 몇 주 롤체토스에 빠졌다가 실버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..
- Total
- Today
- Yesterday
- Algorithm
- leetcode
- RX
- 머신러닝
- 알고리즘
- 독서
- Deep learning
- ios
- 책
- string
- iOS SwiftUI
- 애니메이션
- stanford SwiftUI
- Xcode
- 딥러닝
- ReactiveX
- wwdc
- ARC
- 책 후기
- swiftUI
- swift5
- 문자열
- rxswift
- 스위프트
- 책 추천
- 스위프트UI
- objective-c
- Animation
- objc
- 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 | 29 | 30 | 31 |