![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/nuO8a/btqZ3e6aGPK/kGZnDYX0R4lOqzuKwLbGt1/img.png)
좋아하는 유투버가 라이브 스트리밍으로 Leetcode 알고리즘을 푸시던데 그것도 IDE 없이 풀더라구요. 우와 나도 IDE 없이 풀어야겠다 하면서 찾게 된 문제가 요 문제입니다. 344번 문제이며, 70.5% 난이도는 당연히 이지ㅋ 문제를 살펴봅시다. 문자열을 뒤집는 함수를 작성해주세요. 인풋 문자열은 문자 배열 char []로 제공됩니다. 다른 배열에 추가적인 공간을 할당하지 마세요. O(1) 추가적인 메모리로 in place하게 수정해야 합니다. 예제를 살펴봅시다. 주어진 문자 배열을 뒤집어주면 됩니다. class Solution { func reverseString(_ s: inout [Character]) { s.reverse() } } 이렇게 좋은 함수를 사용 안 하면 섭섭하지라고 생각해서 요 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/k6J1d/btqYQxyy5Sb/VbYd6rR818sQdM3lUp5S1k/img.png)
오늘은 208번 Implement Trie문제를 풀어보겠습니다. 난이도는 중간이고 성공률은 52.1%네요. 일주일에 몇 개씩 풀고 있는데 이 문제가 첫 번째 페이지의 마지막 문제였어요. 물론 번호 왼쪽에 체크가 아닌 물음표 표시도 꽤 보이네요. 시도는 했으나 실패했던 문제도 있어서 다시 풀어봐야 하지만 하기 싫은 언젠가는 풀겠지.. 화이팅 문제를 풀기 전에 트라이에 대한 개념을 정리해보려 합니다. 트라이는 탐색 트리의 일종이며, 트리 자료구조입니다. 문자열 검색을 빠르게 해 주기로 유명합니다. 노드의 모든 자손은 노드에 연관된 문자열의 공통 접두사를 공유하며, 루트는 빈 문자열에 연관됩니다. 문자열에 한 문자만 넣고 다음 문자는 자식 노드에서 찾도록 합니다. 즉 문자열은 세로로 저장되게 됩니다. 문자열이..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/K6ctj/btqYQw0AoVT/tP4J74ddJPOaCJsTfhSks0/img.png)
Property Wrappers @something은 다 프로퍼티 래퍼이다. 각 Property Wrapper는 구조체이며 이는 'template'동작을 캡슐화한다. 예를 들어 @State는 변수가 힙에 살도록 하고 @Published는 변경이 있을 때 publish 하도록 하고 @ObservedObject는 published 변경이 감지되면 뷰를 다시 그리도록 하고 Property Wrapper는 이 구조체들을 생성하고 사용하기 쉽게 해준다. Property Wrapper 안 쓰면 아래처럼 사용해야 한다. Property Wrapper를 사용하기 위해 구조체를 만들고 그에 맞게 구현해줘야 한다. 또한 Property Wrapper안에 또 다른 변수가 존재하는데 projectedValue이다. 이 pro..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c00rUw/btqYLzi67Xc/4mXEcKN5OAc5VTN62ddluk/img.png)
앱을 유지할 수 있는 여러 가지 방법 - FileManager - CoreData - CloudKit - UserDefault 오늘 사용할 유저디폴트를 살펴본다. 유저 디폴트를 사용하기 위해서 인스턴스가 필요하다. let defualts = UserDefaults.standard 데이터 저장하는 방법 defaults.set(object, forKey: “SomeKey”) 여기서 object는 property list여야 한다. (Bool, Int, Double, String 등) 데이터 추출하는 방법 let i: Int = defaults.integer(forKey: “MyInteger”) let d: Data? = defaults.data(forKey: “MyData”) let a = array(for..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/pa6UF/btqXXVop6Z9/zipzlzDFBre314diWOBoCk/img.png)
오늘은 200번 Number of Islands문제를 풀어보겠습니다. 난이도는 중간 난이도며 성공률은 49%로 꽤 높습니다. 문제는 아래와 같습니다. m * n의 2차원 배열 grid이 주어지고 1은 땅이고 0은 물이며, 섬의 개수를 리턴해줘야 합니다. 아래와 같은 예시를 살펴보겠습니다. 1이 땅이고 0이 물이니 섬을 개수를 세기 위해서 1의 시작점을 봅니다. 1로만 이루어져 있고 0에 둘러싸여 있으면 섬이라고 생각하면 됩니다. 섬만 표시하다면 아래와 같이 3개의 섬이 있고 정답으로 3을 리턴해주면 됩니다. 코드를 살펴보겠습니다. 저는 전형적인 방법 DFS로 풀었습니다. import Foundation /// 200. Number of Islands let xArr = [1,0,-1,0] let yArr..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/uGBnb/btqX32F9K53/v6HbnHxROLzgTatrLQPXZK/img.png)
Color vs UIColor - Color ShapeStyle에 Color를 사용할 수 있다. ex) .foregroundColor(Color.green) View에 Color를 사용할 수 있다. ex) Color.white 하지만 API는 제한적이다. - UIColor 시스템 관련 색상을 포함해 더 많은 색이 있다. 원하는 UIColor가 있으면 Color(uiColor:)를 사용하면 된다. Image vs UIImage - Image 주로 View역할을 한다. (jpeg또는 gif등)을 포함하는 타입의 변수는 아니다.(그건 UIImage의 역할) Asset에 있는 이미지는 Image(name: String)으로 접근할 수 있다. 시스템 이미지를 사용하기 위해서는 Image(systenName:)으로..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/WVuUl/btqWX4MWHH5/4OCzBBH2CYLzgohooCkf0k/img.png)
@State 뷰 안에서 완전히 로컬라이즈 된 것. 얼럿 띄우기, 편집, 애니메이션과 같은 일시적인 상태에만 사용한다. View 구조체는 (read - only) 읽기 전용이다. 예로 SwiftUI가 모든 뷰를 유지하는 데 사용하는 변수는 let! 이다. let이면 immutable 하기 때문에 아무도 변경할 수 없으니까 어지럽힐 수도 없다. 또한 뷰 생성 시 초기화되는 변수 외에는 변수가 있는 것이 소용이 없다. 읽기 전용이거나 계산된 변수만 의미가 있다. 뷰는 대부분 "stateless"이어야 하며 모델을 그리는 역할을 한다. 그래서 대부분 뷰는 어떤 상태가 필요하지 않기 때문에 읽기 전용이다. 영구적인 상태는 모델에 속하고 일시적인 상태를 사용할 때 State를 사용한다. @State private ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bj2oiA/btqWULAkotF/Crj9ggaY2Gs7v7K1I8O1E1/img.png)
접근제어자 접근제어자는 접근에 대한 권한을 지정하는 것. 다른 곳에서 접근할 필요가 없으면 private키워드를 붙여준다. private(set) 키워드를 작성해 get만 가능하도록 할 수 있다. private(set) var cards: Array MemoryGame 모델에 cards변수에 private(set)을 지정해 뷰모델에서 접근만 가능하도록 한다. // MARK: - Access to the model var cards: Array { return model.cards } @ViewBuilder some View를 리턴하는 모든 곳에는 해당 키워드@ViewBuilder를 넣을 수 있다. Content는 뷰 리스트로 해석하고 하나로 결합한다. 여기서 하나의 뷰는 (2개에서 10개의 뷰) Tupl..
- Total
- Today
- Yesterday
- 애니메이션
- 문자열
- ReactiveX
- 스위프트UI
- iOS SwiftUI
- stanford SwiftUI
- 스위프트
- ios
- 딥러닝
- SWIFT
- string
- swiftUI
- 책 추천
- RX
- rxswift
- 알고리즘
- leetcode
- objective-c
- 책 후기
- Deep learning
- objc
- wwdc
- ARC
- Animation
- 독서
- swift5
- Xcode
- 책
- 머신러닝
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |