TIL

TIL

이분 탐색

백준의 실버4 문제인 수 찾기를 풀다가 시간초과, 메모리 초과 다 경험해봤다. 이 문제를 풀려고 한 꼼수를 써본다. 약간 다시는 안 그래야겠다 생각해서.. 1) if elem in m_array: 당연히 n!으로 푸니까 안 될듯 2) 테이블 만들어 두고 index로 찾을까? 문제는 들어오는 수가 2^-31 ~ 2^31이다. 128MB로는 해결 못 하는 크기다 3) 이분 탐색 놀랍게도 O(logN)이다. 로직도 간단한 편이라 항상 까먹는데 기억해야겠다. lt = 0 rt = n -1 while lt n_arr[mid]: lt = mid + 1 else: rt = mid - 1

TIL

TIL 19

진짜 오랜만에 블로그에 글을 적는다. 사실 공부 활동은 깃헙으로 계속하고 있었지만 블로그에는 완성된 글을 적어어 한다고 생각하고 있었기 때문에 이런 지체가 생긴거 같다. 앞으로도 code & 디자인패턴 등은 계속 깃헙과 노션으로 정리를 할거 같지만 하루를 마감하는 용도로 블로그를 사용하고자 한다. 방치하던 MVVM도 마찬가지고 1. MVVM에 빠져서 헤어나오질 못하고 있다. MVVM의 명확한 예시라는게 존재하지 않는 거 같다. 예시를 다섯가지 들어 코드를 작성해봤는데 다 다루고 있는 모양이 달랐다. 내가 알기론 MVC 패턴에서의 다양한 문제를 Rx 프로그래밍을 적용하여 해결하기 위해 만들어진 디자인 패턴이 MVVM으로 알고 있는데 같은 문제를 프로토콜, 델리게이트, RxSwift 다양한 문제로 해결하고 ..

TIL

TIL 18

1. SnapKit 사용방법을 알았다. 기존 AutoLayout을 구성할 때 불편하던 부분, 특히 코드 수가 불필요하게 늘어나는 문제를 해결하는 도구인 거 같다. 빌드 시간이 많이 늘어난다면 몰라도 이 정도면 안 쓸 이유가 없는 거 같다. cocoaPods 말고 SPM로 설치하였다. 2. 화면을 구성할 때 어떤것을 우선해서 구현을 해야 하는지 연습 중이다.

TIL

TIL 17

1. 순열과 조합은 스위프트에 기본으로 구현이 안 되어 있고 import 해서 별개의 모듈을 설치해야 사용할 수 있다. 때문에 직접 구현하는 방법을 아는것이 중요하다. 2. try와 catch의 경우 비동기 작업에 있어서 거의 필수적으로 사용된다고 봐도 무방하다. throws 키워드가 유용하다는 것을 배웠다.

TIL

TIL 16

1. Map을 사용하려고 할때 전체 배열을 모두 연산할 필요 없이 중간에 원하는 값까지 접근하면 전체를 만드는것은 메모리와 연산속도 낭비이다. 이 경우 "lazy"를 사용하면 좋다. let exampleLazy = array.lazy.map{ Int($0) }

TIL

TIL 15

1. reversed의 시간복잡도는 O(1)으로 reverse를 쓰는것보다 유리함 2. 카카오 웹툰을 보면 아래와 같은 이미지로 테이블 뷰를 구현한 것을 볼수 있다. 솔직히 이게 얼마나 좋은 UI인지는 잘 모르겠지만 구현에 있어 궁금증이 생겨 이것을 구현해볼 예정이다.

TIL

TIL 14

1. BFS와 DFS는 확실하게 푸는 문제 유형이 존재하고 해당 문제를 어떻게 접근해서 풀어야 하는지 케이스별로 존재하는 듯하다. 때문에 DFS/BFS 문제를 접하게 된다면 혼자 풀어보려고 하는 것보다는 기존에 있는 문제의 유형이 어떻게 구성되어 있는지 어떤 알고리즘을 사용해야 문제를 풀 수 있는지를 보는 것이 효율적인 학습이라고 생각된다. 코딩 테스트 공부를 하다 보면 나만의 독창적인/기발한 방법에 집착하게 되는 경향이 있는데 그게 좋은 건지 아직은 모르겠다. 새로운 문제를 볼 때 응용력이 향상되기는 하겠지만 기업에서 코딩 테스트를 요구하는 경우 기존의 풀이법보다 혁신적인 방법을 요구하는 것이라 생각은 안 된다.

TIL

TIL 13

1. 토스 코테를 봤는데 물론 광탈이었지만 간질간질한 경계에 있는듯한 느낌이다. 더 많이 풀어보면 감을 잡을지도 모르겠다. 2. 코테로 인하여 공부해야 하는 방향을 잡은 느낌이다. 전혀 생각하지 못했던 포인트를 생각해보게 했다. 예를 들어 코딩을 진행하면서 느꼈던 사실 중 하나는 UITableVIewd에서 Cell이 화면에서 그려질 때 한 번에 다 그려지는 게 아니라는 거였는데 이걸 공식문서를 통해 조사해봐야겠다.

TIL

TIL 12

1. 배열 안의 개수를 합쳐서 sum을 구하고 싶을 때는 array.reduce(0,+)을 사용해서 하는 방법이 있지만 항상 그것이 좋은 방법이라고는 할 수 없다. 정말 합치는 게 유일하면 어쩔 수 없지만 애초에 개수를 합칠 필요가 없는 문제라면? 합치지 않고 가장 앞에 있는 녀석만 인식해서 푸는 방법은 어떤가? if let x = 배열.first 식으로 해보는 건 어떨까? 2. 컬렉션 뷰에서 동적으로 레이아웃을 그리고자 하는 경우 FlowLayout을 사용하면 생각대로 안 나오는 경우가 많다UICollectionViewLayout subclass 등이 있는듯하다. 한번 찾아보고 정리하자

TIL

TIL 11

1. 기본 문법만 잘 숙지해도 구현에 있어 생각의 폭이 확장되는 게 느껴졌다. 하나의 예시로 테이블 뷰에서 셀마다 다른 accessoryView 속성을 부여하고자 할 경우 스위치를 쓰면 너무나 쉽게 구현이 가능한데 이걸 생각을 못 해서 한 시간 정도 이리저리 찾아봤었다. 내가 생각해도 바보 같은 일이 아닐 수 없다... 2. Guard의 경우 쓰임새가 if문의 또다른 표현 방법보다는 특정 조건 일시 빠른 Exit를 하기 위한 용도이다. 그러므로 바인딩을 통해서 nil 값이 들어오는 경우를 대비하여 함수에서 초반 부분에서 배치하는 게 올바른 쓰임새다. 물론 후반부에 배치해서 구현에 문제는 없지만 문법 요소의 의도를 파악하고 그에 맞게 코딩을 하는 것이 좋다고 생각한다.

devKen
'TIL' 카테고리의 글 목록