- Total
목록오뚝이 개발자 (209)
꿈꾸는리버리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/blzwDv/btrAUyVjtCh/InyR4D8HKxXu7VwrvygcPK/img.gif)
이번 포스팅에서는 @EnvironmentObject에 대해 알아보려 한다. 만약.. @StateObject와 @ObservedObject에 대해 모른다면 이전 포스팅 내용을 보고 공부를 하고 오는 게 ..!! 왜 @EnvironmentObject가 필요? @StateObject와 @ObservedObject를 사용할 때에는 자식뷰 N에서 사용하기 위해서는 계속 자식뷰1->자식뷰2->자식뷰3 으로 ObservableObjec를 넘겨주는 작업이 필요했다. 근데 만약에 자식뷰2,3,4에서는 A가 필요없는데 자식뷰 5에서 필요하다면..? 그래도 자식뷰2,3,4를 거쳐 자식뷰5까지 A를 전달해줬어야 한다. 그래서 나타난 게 ! @EnvironmentObject ! 요 칭구는 그림에서 봐도 알겠지만, 중간 중간에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MJ0mQ/btrAMukk7Co/oAIuqxzK6QDYzs3XvYB410/img.gif)
UserDefault vs AppStorage : UIKit 에서 userDefault를 사용했더라면, swiftUi에서는 appStorage를 사용한다! (appStorage는 property wrappers) 새로 추가된 거라면 무언가가 좋아졌다는 의미겠쥬..? UIkit에서 유저디폴트를 저장하고 업데이트 하는 걸 개발자가 코드로 짰어야 했다면 (명령형) swiftUI에서는 그냥 appStorage 쓰면 알아서 해준다는 것 ! (선언형) UIKit 공부하신 분이 아니고 appStorage가 처음이라면 굳이 userDefault 사용법과 swiftUI 사용법을 비교하지는 않아도 ... 되지 않을까.. 우선 , appStorage가 무엇인지, 그리고 어떻게 써야 하는지를 알아야 한다고 생각합니다.. 그리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xfFEj/btrAGgHU1PH/wCbszTkVDRpgrKWyKLnfF0/img.gif)
오늘은 @StateObject와 @ObservedObject의 차이에 대해서 알아보려고 한다. @StateObject와 @ObservedObject의 등장 배경 기존의 @ObservedObject는 SwiftUI가 View를 다시 랜더링 할 때 의도하지 않은 초기화가 발생하는 문제가 존재했다. 그리고 이 문제를 해결하기 위해서 @StateObject가 나왔다 ! 다음과 같은 view를 만들어보면서 !! 둘의 차이와 언제 무엇을 사용해야 하는지 알아보자. ObservableObject -> ViewModel 만들기 우선 ObservableObject 프로토콜을 준수하여 ViewModel을 만든다. 이제 이 RiverViewModel을 바라보고 있는 객체는 @Published Attribute로 선언된 da..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjj9p6/btrAAdrvVG4/gBlZEbMK7g15ytVtWI1V7k/img.jpg)
Property란 class, struct, enum 에서 쓰이는 변수나 상수를 부르는 말이다. + ) 이 칭구들(class, struct, enum)에서 쓰이는 변수나 상수는 Property라고, 함수는 method라고 부른다. (특별 대우..,,) Property에는 Stored Property, Computed Property, Type Property가 있다. instance property stored instance property (var/let) + lazy stored property (var) computed instance property (var) type property stored type property (var/let) -> lazy computed type property ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PVBkn/btrAwDbjibs/UkzSPG9qqezx68pHSHQtr1/img.png)
문제: https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이방법: 💡 배열(스택)과 재귀을 이용해서 DFS 구현 DFS? 재귀? 배열(스택)? 우선 차근차근 알아가보자. DFS 링크의 예제 3을 예시로 다뤄보려 한다. 빨강) 1로 첫번째 자리가 고정되었을 때 두번째 자리의 값이 2, 3, 4 이렇게 숫자가 바뀌는 것을 알 수 있다. 두번째 자리가 2로 시작하는 모든 경우의 수를 찾은 후에 두번째 자리의 값은 3으로 바뀐다. 파랑) 이 과정은..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnDsQ5/btrzVBSfOFv/A9GJfzmTRv3rscS4Cb7pV0/img.jpg)
문제: https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 풀이방법: M N x y 10 12 3 9 문제를 식으로 정리하면 M, x : ( k-x ) % M = 0 N, y : ( k-y ) % N= 0 를 만족하는 k의 값을 구하는 문제이다. ( k-x ) % M = 0을 만족하는 첫번째 식인 k = x일 때부터 k = x + M , k = x + 2M, ...이렇게 k에 M을 증가시키며 계산을 한다. 그리고 만약 이 k가 ( k-y ) % N =..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/o5neN/btrzwQo3RzL/axhyAb5UvNSU9QWTVwY1e0/img.png)
기나길었던 MC1 과정이 거의 끝났다. 회고에 앞서 내가 관심있었던 분야에 대해서 이렇게나 공부하고, 탐험하고 나아갔다는게 잘했다고 나자신에게 말해주고 싶다. 그리고 SwiftUI 개발이 처음이었는데에도 불구하고, 열심히 그리고 잘 해보려고 애썼던 칭찬을 해주고 싶다. 오늘의 포스팅에서는 이번 프로젝트를 하면서 들었던 생각들에 대해 정리를 해보았다. 한 아이디어와 프로젝트를 멀리서도 그리고 가까이서도 볼 수 있어야 한다! 우리의 아이디어였던 “스트레스와 힐링”의 관계와 그 내용들을 멀리서 보았을 때는 이 챌린지 목표의 당위성이나 목적성을 찾을 수 있었지만, 사용자의 가까이에서는 이 내용들을 어떻게 풀어야 할지를 모르겠었다. 하지만 여러 사람의 시각에서 계속 해석하고 분석하고 리서치를 하는 과정을 통해서 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JgCCD/btrzvzaoAAo/9KWnyMP7ep5LS4iRhefUaK/img.png)
문제: https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 문제의 이해 기존의 행렬에서 CKP KCP KPC 1행의 [0]과 [1]을 swap 했을 때 KCP KCP KPC -> 원래 코드에서는 사탕의 최대 개수는 2인데, 1행의 [0]과 [1]을 swap을 한다면 사탕의 최대 개수는 3이 된다. 풀이방법: 1) 원래 코드의 사탕의 최대 개수 구하기 2) 행 swap 후 사탕의 최대 개수 구하기 3) 열 swap 후 사탕의 최대 개수 구하기 참고 Point 1) "CCP"처럼 붙어있는 문자열 떼어내서 Char 저장하기 array2.append(r..