
📚 @State @Binding Property Wrapper에 대해서 State ✅ PropertyWrapper ? 변화가 생기면 해당 변수의 값을 읽거나 새로 쓸 수 있음을 의미한다. SwiftUI에서는 property wrapper를 사용해서 변수의 변화와 해당 작업을 자동화 할 수 있다. SwiftUI는 state로 선언된 프로퍼티들의 저장소를 관리한다. StateValue 값이 변경되면 뷰는 해당 value의 appearance를 무효화하고 다시 값을 계산한다. State 변수 값이 변경되면 View는 새로 랜더링을 하여 항상 최신 값을 가진다. State 인스턴스는 그 자체로 값이 아닌, 값을 읽고 쓰는 것을 말한다. 현재 뷰 UI의 특정상태를 저장하기 위해 만들어진것이기 때문에 보통 Priv..

https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1번 풀이 import java.util.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; List list = new ArrayList(); for(int i=0; i
📚 자료구조 자료구조 ✅ 배열(Array) & 링크드 리스트 ✏️ Array와 LinkedList의 차이 배열은 연속된 메모리 공간에 데이터를 저장하고 리스트는 비연속적인 공간에 데이터를 저장한 뒤 두 데이터를 노드로 연결한다는 차이점이 있다. ✏️ Array와 LinkedList의 탐색시간 배열은 index를 통해 데이터에 접근이 가능하다. 따라서 시간복잡도는 O(1)이다. 반면에 리스트는 처음부터 연결된 노드들을 따라가며 데이터를 찾아야하기 떄문에 최악의 경우에는 첫 노드에서 탐색을 시작하고 탐색할 노드가 마지막에 있는 경우가 된다. 따라서 시간 복잡도는 O(N)이다. ✏️ LinkedList에서 삭제연산을 하는 과정 삭제연산을 하기 위해서는 먼저 가장 첫 노드부터 바로 다음 노드가 삭제하고나 하는..

📚 Save Color in UserDefaults from Color Picker variable in Color Data private let COLOR_KEY = "COLOR" private let userDefaults = UserDefaults.standard saveColor func saveColor(color: Color) { let color = UIColor(color).cgColor if let components = color.components { userDefaults.set(components, forKey: COLOR_KEY) } } loadColor func loadColor() -> Color { guard let colorComponenets = userDefaults...
📚 main & UIApplication @main 프로그램의 진입점을 나타낸다. 어느 프로그램이든지 시작점인 Entry Point가 존재해야한다. Swift에서는 @main을 통해서 어디서부터 이 앱이 최초 실행되고 시작될지를 명시해주는 키워드이다. 이 키워드는 Swift 5.3 이상(Xcode 12)부터 사용된 키워드로 바로 이어서 설명하겠지만 @main 키워드가 나오기 전에는 @UIApplcationMain 키워드를 사용했다. > UIKit의 경우 AppDelegate가 사실상 App Life Cycle을 관리하는 모든 주체이기 때문에 여기에 @main 키워드가 붙는다. import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate..

📚 초기화에 대해서 AppDelegate() init() AppDelegate를 이용한 초기화 이 방법은 사실 AppDelegate의 역할(진입점)을 하는 것이 따로 존재하기 때문에 권장되지는 않는 방법이다. @main struct PushMessageApp: App { var body: some Scene { WindowGroup { ContentView() } } } 위 코드에서 보이는 App 프로토콜 자체가 앱의 구성을 담당하는 구조체에 프로토콜을 지정해주어서 앱의 시작(Presenting) 지점을 정해주는 역할을 하게 된다. 또한 @main을 통하여 앱이 시작되고 가장 먼저 들어가야하는 부분을 명시해주고 있기 때문에 AppDelegate가 필요하지 않다. 그러나 앱의 초기화 이외에도 AppDele..

📚 TreeSet TreeSet TreeSet은 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있다. 이진 탐색 트리의 구조로 이루어져 있다. 추가와 삭제에는 시간이 조금 더 걸리지만, 정렬과 검색에 높은 성능을 보이는 자료구조이다. 이진탐색트리의 형태로 데이터를 저장하기에 기본적으로 Nature Ordering을 지원하며 생성자의 매개변수로 Comparator 객체를 입력하여 정렬 방법을 임의로 지정해줄 수도 있다. 레드 블랙 트리 : 부모노드보다 작은 값을 가지는 노드는 왼쪽 자식으로, 큰 값을 가지고 있는 노드는 오른쪽 자식으로 배치하여 데이터의 추가나 삭제 시 트리가 한쪽으로 치우쳐져있지 않도록 균형을 맞추어준다...
📚 CS Study 운영체제 ✅ 프로세스 ( Process ) ✏️ 프로세스가 무엇인가 ? 프로세스는 실행중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 상태이다. 프로세스는 운영체제로부터 주소 공간, 파일, 메모리 등을 할당 받는다. ✏️프로세스의 메모리구조는 어떻게 생겼나 ? 스택영역 : 지역변수, 매개변수, 리턴 값 등이 임시로 저장되어 고정된 크기의 공간이다. 주로 함수가 불렸을 때 데이터를 저장했다가 함수가 종료될 때 데이터를 반환한다. 힙 영역 : 프로세스가 동작중에 동적으로 데이터를 할당하는 공간이다. 데이터 영역 : 데이터 영역에는 프로그램이 시작될 때 생성되는 전역변수, 정적변수 등이 저장된다. Blocked State Symbol 영역 : 데이터 영역에는..