본문 바로가기

분류 전체보기87

[iOS/SwiftUI] 기초적인 Navigation 구현하기 NavigationView 사용하기 var body: some View { NavigationView { List(artworks) { artwork in // Add views to the navigation stack with NavigationLink. NavigationLink( destination: DetailView(artwork: artwork), label: { Text(artwork.title) }) } .listStyle(PlainListStyle()) // Notice that this modifier is for List. (Not NavigationView.) .navigationBarTitle("Artworks") } } Bool 변수를 toggle 해서 sheet 띄우기 Bo.. 2021. 4. 21.
[알고스팟] Wild Card - 동적 계획 ※ 웹 환경에 최적화된 서식이므로 웹 페이지로 열람함을 권장. 와일드 카드(링크) 문자열을 대조해서 찾는데 * 는 모두 대응 되므로 * 의 다음 문자와 일치하는 부분 문자열을 하나씩 잘라가며 찾는다. 메모이제이션을 활용할 때는 저장 공간을 reset 하는 시점을 잘 확인해야 한다. #include #include #include #include using namespace std; // -1: initial state, 0: false, 1: true int cache[101][101]; string wildCard, fileName; int findMatch(int w, int f) { int& ret = cache[w][f]; if (ret != -1) return ret; // Increase id.. 2021. 4. 21.
[iOS/SwiftUI] ForEach 로 View 반복하기 (Identifiable protocol) Static View vs. Dynamic View Static View 는 SwiftUI 의 View 컴포넌트들을 하드 코드 해서 만드는 View 를 말한다. VStack 안에 TextField, Button 등을 작성한 View 를 예로 들 수 있다. Dynamic View 는 List 혹은 ForEach 를 통해 다수의 View 를 만드는 방식이다. View 를 추가, 제거 시에 몇 번째 View 에 생긴 변화인지 파악해야 하므로 각각을 구별할 수 있는 식별자(identifier) 가 필요하다. 식별자란 유일하게 혼자만 가지는 정보로, 하나의 식별자에 대해 하나의 대상만 존재하기 때문에 이를 통해 어떤 Item(View) 인지 파악할 수 있다. Identifiable protocol Identifi.. 2021. 4. 14.
[iOS/Swift] KeyPath KeyPath 프로퍼티를 실제로 불러오거나 정보를 읽지 않은 채로 그 자체를 참조만 할 수 있게 한다. struct Person{ var socialSecurityNumber: String var name: String } let atj = Person(socialSecurityNumber: "13-2432-21", name: "TaeJeong") let nameKeyPath = \Person.name let SSNKeyPath = \Person.socialSecurityNumber print(atj[keyPath: nameKeyPath]) print(atj[keyPath: SSNKeyPath]) KeyPath 활용하기 Identifiable 프로토콜을 사용할 때 객체마다 상이한 identifier 의 .. 2021. 4. 14.
[iOS/SwiftUI] State & Binding @State View 는 앱의 상태를 나타내고 Data 는 그 상태의 정보를 가진다. Data 가 바뀌면 View 는 그 변경 사항을 반영해야 하는데, View 는 값 타입 (Value type) 이므로 변경 사항을 반영하지 않는다. (modifier 를 사용할 때도 변경 사항의 반영된 새로운 View 를 반환 받는 것이다.) 따라서, View 의 상태를 변경 가능한 타입으로 메모리에 두고 Data 가 변경될 때마다 View 를 갱신 (Re-render) 하도록 해야한다. @State 를 프로퍼티 앞에 사용하면 해당 프로퍼티의 변경에 대해서 View 는 Re-render 될 수 있다. Binding Data 의 Binding 을 받아서 동작하는 컴포넌트들이 있다. Binding 을 받는 것은 실제 Dat.. 2021. 4. 14.
[프로그래머스] 쿼드압축 후 개수 세기 - 분할 정복 ※ 웹 환경에 최적화된 서식이므로 웹 페이지로 열람함을 권장. 쿼드압축 후 개수 세기 접근 방법 쿼드 압축은 2차원 배열을 4분할 했을 때 4면의 정보를 한 가지 표현으로 나타낸다. 문제에서 4면이 모두 같은 숫자인 경우 이를 해당 숫자 하나로 표현한다. 즉, 모두 같은 숫자를 가진 배열을 찾을 때 까지 주어진 배열을 4분할 한 뒤 각각에 대해 검사한다. C++ 코드 #include #include #include using namespace std; vector cutInQuarter(vector coord, vector arr) { vector row; vector ret; for (int i = coord[0]; i < coord[1]; ++i) { for (int j = coord[2] ; j <.. 2021. 4. 12.