목록전체 글 (8)
일왓록(日What錄)

문제https://www.acmicpc.net/problem/7569철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다.창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이..

Swift를 가지고 코딩테스트를 준비하면 치명적인 Swift의 단점을 발견할 수 있다. 바로 다른 언어들에서 지원하는 String의 Index를 통한 접근이 기본적으로 지원하지 않는 다는 것인데, 이를 해결하기 위해서는 Subscripts를 통해 직접 구현해야한다. SubScripts에 대해 알아보자 Subscripts 콜렉션의 요소에 접근하는 방식 클래스, 구조체, 열거형은 콜렉션, 리스트, 또는 시퀀스의 멤버 요소에 접근할 수 있는 단축키(ShortCuts)인 서브 스크립트(subscripts)를 정의할 수 있다. 설정과 검색을 별도의 메서드 없이 인덱스로 값으로 구현하기 위해 서브 스크립트를 사용한다. 단순 텍스트로만 보면 이해하기가 쉽지 않을 수 있으나 코드로 보면 이해하기가 쉽다. var som..

UIKit에서 View를 띄워주기 위해서 보통 UIViewController를 사용한다. 이 ViewController간의 전환이 일어나면서 뷰의 상태에 따라 일련의 과정이 있는데, 이 과정에 따라 메서드들이 호출되게 된다. 이를 우리는 보통 UIViewController의 생명주기라고 한다. 매우 기초적인 내용이지만 의외로 제대로 파헤쳐 보지 않은 상태로 개발을 진행하기도 한다. 필자도 그중 한명이라 취준중인 지금 시기에 정리를 해볼까 한다. 아마 블로그를 탐색하다 보면 해당 프로세스가 많이 보인다. 공식 문서에 올라와 있던 내용인 것으로 알고 있는데 필자가 글을 작성하는 시점에는 찾지 못했다. 필자가 공식 문서에서 찾은 View LifeCycle에 대한 정리는 다음과 같다. (일단은 loadView와..

⚠️발생 문제 회원가입에서 이메일 중복 검사, 비밀번호 유효성 검사, 비밀번호 재확인 검사, 닉네임 글자수 확인등의 조건을 확인하고 서버로 API요청을 하는 로직을 개발하던 중, 이메일 중복 검사를 확인했음에도 다시 확인하라는 메시지가 나오는 문제가 발생했다. 👀원인 inputEmail .filter({ !$0.isEmpty }) .debug() .drive(with: self) { owner, email in emailIsUsable.onNext(false) checkBtnActive.onNext(true) emailRequestable.onNext(owner.isValidEmail(email)) //유효성 검사를 통한 request가능 여부 } .disposed(by: disposeBag) 텍스트 필..

개발을 하다보면 유저의 핸드폰 번호를 입력받을 일이 잦다. 그러다 보면 사용자가 "-"를 쓰지 않아도 자동으로 "-"를 넣는 로직을 구현하고 싶을 때가 많은데 이 로직을 처리하는 방법중 하나에 대해서 작성해볼까 한다. ⚠️알고리즘 적으로 흠이 많은 로직일 수도 있습니다. 검색을 통해 오신 분들은 참고 정도로 봐주시면 감사하겠습니다. 💡아이디어 사용자의 입력 발생 사용자의 입력 또는 이미 입력되어 있는(텍스트 필드에 존재하는) 값중 숫자만 filter 현재까지 입력된 텍스트 필드에 있는 값 또한 "-" 가 포함되어 있으므로 이를 제거 하여 숫자만 뽑아내는 작업이 필요함 사용자가 현재까지 입력한 값에 대한 배열 / 적용할 패턴에 대한 배열 / 패턴이 적용된 최종 출력 배열 생성 패턴 배열 앞자리부터 숫자가 ..

Meet async/await in Swift - WWDC21 - Videos - Apple Developer Swift now supports asynchronous functions — a pattern commonly known as async/await. Discover how the new syntax can make your code... developer.apple.com ⚠️ 해당 글은 필자가 WWDC를 보면서 공부할 목적으로 정리한 글입니다. 잘못된 번역 및 잘못된 해석이 있을 수 있으니, 잘 못된 부분이 있다면 지적해주시면 감사하겠습니다. - 필자가 이해 및 해석하여 추가 설명을 한 경우는 괄호 및 Italic로 표시 하였으니, 참고 바랍니다. 동기와 비동기의 차이 preparingTh..

TableView를 스토리보드로 다루다 보면 Content를 설정할 수 있다. 많은 경우에 Dynamic Prototypes로 설정해서 TableView를 구성한다. 필자도 그렇고 아마 모두가 그럴 것이다. 하지만 클릭해보면 다음과 같이 Static Cells이 있다. Static Cells로 설정하면 크게 달라지는게 없어 보인다. 단순히 ProtoType Cells 자리에 Sections로 바뀌고 스토리보드 파일에 있는 TableView가 Prototype Content 글씨가 사라지고 별 변경은 없어보인다. 그럼 두가지가 무슨 차이가 있을까 문득 궁금해졌다. 그 차이를 한번 알아보자 Static Cells 사실 Static Cells를 알아보기도 쉽지 않았다. 검색했을때 자료도 거의 나오지 않았고 공..

프로젝트를 진행하면서 코드를 작성하거나 Swift로 작성된 코드를 보다보면 뜬금 없는 ? 라던지 ! 라던지 이러한 Optional을 정말 많이 접하게 된다. 이러한 Optional 개념 때문에 컴파일 오류가 뜨는 경험을 아주 많이 했었다. 그럴 때마다 그냥 인터넷 검색해서 어떻게든 해결하면 이번엔 런타임 오류... 그래서 차라리 이럴바에 다른 언어처럼 런타임 오류만 나게 해주면 안되나... 이런 생각을 하기도 했었다. 공부를 했으면 됐을 것을...ㅎㅎ; 이렇게 필자를 아주 귀찮게 했던 옵셔널(Optional)에 대해서 알아보자. 옵셔널의 개요 Swift는 안전성을 굉장히 강조하는 언어다. 옵셔널은 그 안전성을 높이기 위해 도입된 스위프트만의 새로운 개념이다. 당장 구글에 Swift라고 쳐서 나오는 애플 ..