📝 DevNote 최근 3편
-
[Combine] Combine 개념 및 등장배경
CombineApple 공식문서의 소개는 다음과 같다.이벤트 처리 연산자를 결합해 비동기 이벤트 처리를 커스텀한다개요시간 흐름에 따른 값을 처리하기 위한 선언적 Swift API를 제공하는 프레임워크이 값들은 여러 종류의 비동기 이벤트를 나타낼 수 있다. ( 통합 프레임워크라는 의미! )Publisher를 선언하여 시간에 따라 변경될 수 있는 값을 노출하고, Subscriber가 Publisher로부터 값을 받도록 한다.Publisher 프로토콜은 시간에 따른 일련의 값을 전달할 수 있는 타입을 선언한다.Upstream publisher로부터 받은 값을 처리하고, 처리한 값들을 다시 게시하는 Operator를 갖는다.Publisher Chain의 말단에서 Subscriber는 element들을 수신할 때..
2024.04.28
-
[SwiftUI] ObservableObject, @StateObject, @ObservedObject 알아보기
[Protocol] ObservableObject Class 전용 프로토콜로, 데이터가 변경되면 Observer에게 알림을 보내는 타입 iOS 17.0부터는 Observable() 매크로 사용이 권장됨 ObjectWillChange ObservableObjectPublisher타입으로, 객체가 수정되기 전에 전달하는 publisher이다. objectWillChange.send() 메서드를 사용해 변경사항을 subcriber에게 전달한다. 변경사항이 있을 때마다 objectWillChagne.send() 를 해야한다면, 몹시 불편할 것 같다. 이를 보완하는 방법으로 @Publshed 라는 property wrapper가 있다. import SwiftUI class TestViewModel: Observa..
2024.03.25
-
[Swift] NSCache 이해하기
활용 개념 Cache CPU와 HDD의 속도 차이를 메꾸기 위해 고안된 개념으로, Cache라는 임시 메모리를 두어 CPU에서 자주 사용하는 데이터를 임시 저장한 후, 필요할 때 사용한다. 컴퓨터 과학에서는 데이터나 값을 미리 복사해두는 임시 저장소를 의미하며, 위에서 CPU와 HDD 간의 속도 간극을 메우기 위해 사용한 것처럼 데이터 접근 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우 사용한다. Memory Cache(메모리 캐시) vs Disk Cache(디스크 캐시) Memory Cache Disk Cache 종류 NSCache 등 FileManager, UserDefaults, CoreData 등 특징 휘발성 - 앱 종료 시 메모리에서 해제 비휘발성(영속성) - 파일 형..
2024.03.17
♻️ 회고글 최근 3편
-
네이버 부스트 캠프 9기 챌린지 합격 후기
이 후기글은 네이버 부스트 캠프 9기 테스트가 어떻게 진행되었는지와 난이도, 그리고 시험에 도움이 될만한 것 정도를 작성했다.내가 아래의 내용처럼 준비했다기보단, 부스트 캠프가 이러한 능력을 요구하는 것 같다. 정도로 이해하면 될 것 같다.글은 1차 시험 이후, 2차 시험 이후 2번 작성된 내용이다. 1차 테스트 (2024년 6월 15일)플랫폼: 구름지금까지의 네이버 부스트 캠프는 프로그래머스를 이용해왔는데, 이번 테스트는 구름이라는 플랫폼을 이용했다. 문제 난이도백준(브론즈), 프로그래머스(레벨0~1) 정도로 추정된다.1차 테스트는 평가 기준을 넘기는 모두가 합격할 수 있는 절대 평가제를 시행했다. 평가 기준은 알 수 없다. 테스트 난이도가 낮게 느껴진 이유는?올해 네이버 부스트캠프는 새로운 커리큘럼 ..
2024.06.15
-
코딩테스트 준비를 위한, 코드트리 후기
꾸준한 블로그 글쓰기를 위해 참여한 글또에 `코드트리`라는 코딩테스트 학습 플랫폼에서 협업 제의를 해준 덕분에, 나같은 코딩테스트 유랑민도 코드트리 커리큘럼에 참여할 수 있게 되었고, 한 달동안 사용하면서 느낌 장단점을 가볍게 정리해봤습니다. 장점 문제집 사실 지금까지 코딩테스트를 공부하는 게 어려웠던 점은, 내가 잘 하고 있는건가,, 라는 모호함이 컸습니다. 고등학교를 넘어서부터는 커리큘럼이나 개념의 깊이에 대해 본인 스스로 찾아가야하는데, 매번 스스로 찾다보면 쉽게 지치기 마련이죠. 그런 의미에서 정해진 커리큘럼과 단계가 있고, 개념을 알고 문제를 풀 수 있다면? 이라는 생각을 적극 반영한 플랫폼이라는 생각이 들었습니다. 특히 내가 인터넷을 통해 찾은 개념이 불확실하거나, 이해하기 어려울 수 있는데 ..
2024.03.02
-
개발 외주, 이런 건 하면 안 된다!
서론 아주 잠깐이지만 첫 iOS개발 외주를 진행했던 내용입니다. 회사명과 관련 인물들에 대한 구체적인 언급은 하지 않고, 그 과정에서 발생한 사건들만 작성하였습니다. 만약 개인적으로 질문하시더라도 회사명과 누구인지 등에 대한 것은 답변하지 않을 것이기 때문에, 관련 질문은 안 해주시면 감사하겠습니다. 이래저래 불만이 적힌 글이지만, 제게는 좀 재밌는 경험이었습니다. 목차 1. 외주 직접 계약, 어떻게 하게 됐을까? 2. 계약서 작성, 어떤 걸 주의해야 할까? 3. 계약 이후 알게 된 사실들 4. 중도 하차 결정 1. 외주 직접 계약, 어떻게 하게 됐을까? 1-1. 오픈카톡방을 통한 외주 계약 iOS 개발자분들은 워낙 풀이 좁다보니 최대한 정보를 끌어오기 위해 여러 오픈카톡방에 발을 담그고 있는 경우가 많..
2024.01.21
💻 알고리즘 최근 3문제
-
[백준] Swift - 21610번: 마법사 상어와 비바라기
문제마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기를 크기가 N×N인 격자에서 연습하려고 한다. 격자의 각 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지한다. 바구니에 저장할 수 있는 물의 양에는 제한이 없다. (r, c)는 격자의 r행 c열에 있는 바구니를 의미하고, A[r][c]는 (r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미한다.격자의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다. 마법사 상어는 연습을 위해 1번 행과 N번 행을 연결했고, 1번 열과 N번 열도 연결했다. 즉, N번 행의 아래에는 1번 행이, 1번..
2024.07.04
-
[프로그래머스] Swift - 가장 긴 팰린드롬 (LV.3)
문제 설명앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다. 제한사항문자열 s의 길이 : 2,500 이하의 자연수문자열 s는 알파벳 소문자로만 구성예상 문제 풀이 방식1. 완탐 -> 전체 문자열에서 팰린드롬 구하기 or 팰린드롬만 찾기2. DP 전체 문자열에서 팰린드롬을 구하면, 시간초과가 날 것 같은 느낌이 들지만, 일단 시도해보자.func solution(_ s:String) -> Int { let s = s.map {..
2024.06.18
-
[백준] Swift - 24467번: 혼자하는 윷놀이
문제오전 4시, 민재는 윷놀이를 하고 싶어졌다. 하지만 다들 자는 시간이라 윷놀이를 같이 할 사람은 없었다.민재는 윷놀이를 혼자 할 수 있는 방법을 생각해냈다.혼자 하는 윷놀이에 적용되는 규칙은 다음과 같다.처음에 말은 윷판의 오른쪽 아래에 위치한다.열 번의 차례 안에 말 하나가 완주하면 민재가 승리한다.차례 한 번에는 윷가락 네 개를 던진 후:뒷면이 하나인 경우 말을 한 칸 전진시킨다.뒷면이 둘인 경우 말을 두 칸 전진시킨다.뒷면이 셋인 경우 말을 세 칸 전진시킨다.모두 뒷면인 경우 말을 네 칸 전진시킨 뒤, 윷을 추가로 던진다.모두 앞면인 경우 말을 다섯 칸 전진시킨 뒤, 윷을 추가로 던진다.윷판을 정해진 경로로 한 바퀴를 돌아 윷판의 오른쪽 아래에 도착한 뒤 한 칸 더 움직여야 완주할 수 있다.혼..
2024.06.13