전체 글
-
2019년 회고 그리고 2020일상/끄적끄적 2020. 1. 5. 17:33
역사를 잊은 민족에게 미래는 없듯 과거의 나를 잊으면 발전은 없다. 2020년 새해를 맞이하며 나의 2019를 돌아보고 반성하고 발전하는 시간을 가져보고자 한다. 2019, 난 무엇을 했는가. 2019년은 내게 조금 특별하다. 내 인생의 방향을 정한 터닝포인트랄까. 18년 11월 iOS개발자가 되겠노라 결심하였고 그렇게 벌써 1년의 시간이 흘렀다. iOS Developer 아무런 지식도 없이, 조언도 없이 iOS 개발자가 되겠다고 뛰어들었다. 일단 하고보면 어떻게든 되겠지. 말그대로 맨 땅의 헤딩이었고, 그만큼 엄청난 삽질들을 했다. 19년은 특별한 성과보다는 "삽질 기록기" 이다. 우선 닥치는 대로 좋다고 하는 자료들을 찾아다녔다. boostcamp, stanford CS193p, LBTA Youtub..
-
Swift) GenomicRangeQuery in CodilityAlgorithm/Codility 2020. 1. 3. 18:06
https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ GenomicRangeQuery coding task - Learn to Code - Codility Find the minimal nucleotide from a range of sequence DNA. app.codility.com 출처: Codility 분류: Lesson5 Prefix Sums 개인적으로 매우 매우 고통 받았던 문제입니다.. "푸는 것" 자체는 어렵지 않게 할 수 있으나 시간 복잡도를 통과하기가 굉장히 어려웠습니다.. Hㅏ.... 문제를 간단히 요약하면 ACGT 로 이루어진 유전자 배열 S와 유전자의 부분의 인덱스가 들어있는 P, Q가 주어..
-
HeapComputer Science/DataStructure 2019. 12. 31. 20:32
Heap 이란? 힙은 루트에 가장 힙한 녀석을 두는 이진 트리이다. (응?) 루트에 항상 최대 또는 최소값을 두기 때문에 최대 최소값을 빠르게 얻을 수 있다. O(1) 힙은 완전 이진트리의 모습을 띄는데, 부모 노드가 자식 노드보다 크거나(최대힙) 작은지(최소힙) 만을 보장한다. 즉, 자식노드 끼리는 큰지 작은지를 비교할 수가 없다. 힙은 배열로 구현하면 공간, 시간 복잡도 측면에서 좋기 때문에 배열로 많이 구현한다. 배열로 구현했을 때 다음과 같이 인덱스를 구할 수 있다. parent: floor((i-1) / 2) left: 2i + 1 right: 2i + 2 인덱스를 1부터 시작하면 parent: i/2, left: 2i, right: 2i+1 로 구할 수도 있다. 잘 보면 오른쪽 노드 = 왼쪽노..
-
map flatMap 그리고 compactMapiOS 2019. 12. 30. 18:27
오늘은 비슷한 듯 다른 map 3총사에 대해 알아보겠습니다. Map 먼저 가장 기본이 되는 map 입니다. map의 정의는 다음과 같습니다. 배열 내부의 값을 하나씩 mapping 해 각 요소에 대한 값을 변경한 새로운 배열을 원할 때 사용합니다. 각 요소의 값을 변경한 뒤 배열로 다시 리턴해줍니다. [Int] 안의 모든 원소의 제곱한 배열을 원한다면? let a = [1, 2, 3, 4, 5] let squared = a.map { $0 * 2 } print(squared) // [2, 4, 6, 8, 10] flatMap 그리고 compactMap flatMap 도 compactMap도 둘다 맵은 맵이니 하는 일은 비슷합니다만 어떤 차이가 있을까요? 먼저 이 녀석들도 정의부터 살펴보고 가겠습니다. c..
-
Lv2 위장Algorithm/Programmers 2019. 12. 30. 16:58
출처: https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 | 프로그래머스 programmers.co.kr 분류: Lv2 해시 처음엔 쉬워보였지만 개인적으로 꽤 어려웠던 문제였습니다... "중복된 이름은 없으니 분류별로 개수만 카운팅하면 되겠다" 라고 생각하며 접근했지만 그 이후 경우의 수를 어떻게 계산해야 할 지가 문제였습니다. 단순히 종류별 개수로 곱하면 경우를 다 포함하지 못하고.. 종류별로 1개를 뽑는 경우, 2개를 뽑는 경우 ... 로 나눠보자니 종류별로 개수가 다르고.. 결국 다른 분들의 풀이를 찾아보았습니다. 이 문제의 가장 큰 포인트는 의상을 최소 1개만 선택하면 더 이상을 뽑지 않아도 된다는 것입니다. 1개만 뽑으..
-
Textfield touchUpInside not workingiOS 2019. 12. 27. 20:23
보통 button에 event를 붙일 때 touchUpInside 를 주로 사용합니다. 일반적으로 사용자가 클릭했다가 떼는 순간에 이벤트가 발생하는데에 익숙해져 있고 발생할 에러들을 방지할 수도 있기 때문인데요. (앱을 사용하다가 잘못 클릭했을 때 손가락을 다른 곳으로 움직여서 떼면 이벤트가 발생하지 않는 경험, 다들 해보셨죠??) TextField에도 무심코 이렇게 했다가는 평소처럼 했는데 무엇이 문제인지 한참 고민에 빠질 수 있습니다. (네 저처럼요.... :( 사실 이유는 제 개인적인 의견입니다만... TextField는 클릭하는 순간 텍스트를 입력받는 이벤트가 발생합니다. (텍스트 필드를 클릭하고 있으면 키보드가 올라오는 것을 확인할 수 있습니다.) 따라서 떼는 순간까지 기다릴 수가 없어서 tou..
-
Lv2 쇠막대기Algorithm/Programmers 2019. 12. 24. 15:46
출처: https://programmers.co.kr/learn/courses/30/lessons/42585 코딩테스트 연습 - 쇠막대기 | 프로그래머스 여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레이저의 배치는 다음 조건을 만족합니다. - 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있습니다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓습니다. - 각 쇠막대기를 자르는 레이저는 적어도 하나 존재합니다. - 레이저는 어 programmers.co.kr 분류: Lv2 스택/큐 닫히는 ")"를 만났을 때 이게 레이저인지 ..
-
다리를 지나는 트럭 Lv2Algorithm/Programmers 2019. 12. 23. 21:55
출처: https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 | 프로그래머스 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서 programmers.co.kr 분류: Lv2, 스택/큐 순서대로 서있는 트럭들이 다리를..