전체 글
-
[프로그래머스] 조이스틱 / Swift프로그래밍/코딩테스트 2021. 5. 19. 23:13
https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr [문제 보기] 더보기 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽..
-
[프로그래머스] 기능 개발 / Swift프로그래밍/코딩테스트 2021. 5. 17. 16:15
https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr [문제 보기] 더보기 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진..
-
그리디- 큰 수의 법칙 / Swift프로그래밍/코딩테스트 2021. 5. 13. 17:04
이것이 취업을 위한 코딩테스트다 p.92 방법1 : 반복문으로 구하기 import Foundation let nmk = readLine()!.split(separator: " ").map { Int($0)! } var list = readLine()!.split(separator: " ").map { Int($0)! } let n = nmk[0], m = nmk[1], k = nmk[2] var passed = 0 var sum = 0 list.sort(by: >) while passed < m { passed += 1 if passed % k == 0 { sum += list[1] } else { sum += list[0] } } print(sum) 방법2 : 수열의 규칙성을 이용하여 실제 갯수를 구해..
-
[실수 분석] 2021 카카오 인턴 3번, 문자열프로그래밍/코딩테스트 2021. 5. 10. 19:45
제목: [실수 분석] 2021 카카오 인턴 3번, 문자열 단순 구현 문제였다. 정확도는 통과가 되었지만, 효율성에서 반타작이 나왔다. 다른 사람 후기를 보아도 비슷하게 푼 것 같아 계속 원인을 찾아보다가 실수한 부분을 찾았다. (2021. 5. 15 수정) 처음에는 split, component 메서드부분이 원인이라고 생각했지만, 다른 분과 이야기를 하면서 이 부분은 메서드 변경할때마다 성능차이가 나는정도의 성능향상이라면 큰 의미가 없는것 같다고 판단되었다. 커서가 100만개의 첫부분과 맨끝부분을 계속 이동하게 될 때 문제를 해결하는 방향으로 해결해야 했던 것 같다.. 즉 세그먼트 트리, 펜윅 트리 + 이진탐색 등으로 커서 위치를 이동하는 부분을 해결해야 했던 것 같다. (2021. 12. 22 수정) ..
-
[RxSwift] Operators (scan, window)프로그래밍/Swift 2021. 4. 16. 23:52
1. scan 직전에 내려보낸 데이터와 현재 stream(위)에 있는 데이터 이렇게 2개 데이터를 특정한 연산을 하고 내려보냄. 예를들면 위의 stream에서 1은 내려보낸 것이 없어 그대로 내려가서 1이되고, 1 다음에 있는 2는 직전에 내려보낸 1과 연산(1+2)하여 3이 되고, 이것을 내려보낸다. reduce와 비슷한 것 같지만 reduce는 한개의 원소만 최종적으로 내려보내는 것이고(다르기도하고 operator reduce가 따로 존재하기도 함) scan은 한개씩 내려보내면서 직전에 내려보낸 것과 상호작용을 함. 사용예시 class MenuListViewModel { // var totalPrice: Observable = Observable.just(10_000) var totalPrice: P..
-
[RxSwift] subject프로그래밍/Swift 2021. 4. 16. 22:18
1. BehaviorSubject subscribe하면, 디폴트값(핑크색 값)이 내려온다. 그리고 계속해서 데이터가 발생하면 바로바로 내려온다. 그러다가 두번째 subscribe가 발생하면, 마지막값(초록색)을 내려주고, 마찬가지로 계속해서 데이터가 발생할때마다 내려온다. 도중에 subscribe를 했으니 맨위에 있는 것은 observable이다. Observable.just, Observable.from 이런것으로 만들어진 observable은 이미 생성할 때 데이터를 전부 가지고 있을 때의 경우인데, 여기서 쓰인 observable은 생성할 때 꼭 전체 데이터를 가지고 있어야 하는 것이 아닌, 나중에 데이터를 추가해서 넣어줄 수 있는 유형의 observable이다. 만일 도중에 에러(그림상에서 X에 ..
-
[RxSwift] subscribe, next, error, completed프로그래밍/Swift 2021. 4. 15. 19:06
1. subscribe 여러가지 처리하고 만들어진 Observable 데이터를 받아서 사용할 때 쓰는 키워드. Observable = 나중에 생기는 데이터, subscribe = 나중에 생기는 데이터를 꺼내 쓰는것. subscribe의 return타입은 disposable임. 다른 operator들은 return타입이 전부 stream임(Observable) DisposeBag에 여러 dispose한 것들을 담을 수 있지만 disposeBag.disposed()라는 메서드를 호출 할 수는 없음. 그래서 disposeBag 변수에 새로운 disposBag를 생성하는 것으로 disposed() 를 하게함. subscribe의 반환타입이 disposable이기 때문에, 보통사용할 때 외부의 변수로 생성한 di..
-
[RxSwift] Operators (just, from, map, filter)프로그래밍/Swift 2021. 4. 15. 17:07
1. just : 넣어주면 그대로 한번에 다음번으로 전달 생성 연산자. 빨간색 구슬은 데이터. 아래 화살표는 스트림. 스트림에 세로로 막대기가 있는것은 데이터가 끝남을 의미 (complete) --> disposableBag에서 사라짐. func just1() { Observable.just("Hello") .subscribe(onNext: { s in print(s) // Hello }) .disposed(by: disposeBag) } func just2() { Observable.just([1,2,3]) .subscribe(onNext: { arr in print(arr) // [1,2,3] }) .disposed(by: disposeBag) } func downloadJson1(_ url: Str..
-
개인정보 처리 방침 - iOSUpcomingTodo 2021. 3. 26. 05:08
('https://turume.tistory.com/entry/iOS-%EA%B0%9C%EC%'이하 'turu')은(는) 「개인정보 보호법」 제30조에 따라 정부주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2021년 3월 26부터 적용됩니다. 제1조(개인정보의 처리 목적) ('https://turume.tistory.com/entry/iOS-%EA%B0%9C%EC%'이하 'turu')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 겨우에는 「개인정보 보호법」 제18조에 따라 별도의 동의..
-
-
[iOS] scrollViewDidEndScrollingAnimation이 시뮬레이터에서는 호출되지만 디바이스에서 호출되지 않을 때프로그래밍/iOS 2021. 3. 24. 23:23
문제 상황 테이블뷰에서 마지막 셀로 스크롤시켰을때, 스크롤 애니메이션이 끝날때 호출되는 메서드인 scrollViewDidEndScrollingAnimation에 마지막 셀에 접근하고 키보드 팝업을 올리려고 했다. tableView.scrollToRow를 사용했을 때 시뮬레이터에서는 scrollViewDidEndScrollingAnimation가 호출이 되었지만, 디바이스에서는 호출이 안되었다. 원인 scrollViewDidEndScrollingAnimation은 setContentOffset:animated:또는 scrollRectToVisible:animated:을 사용할 때만 호출된다고 한다. scrollToRow를 사용했을 때 시뮬레이터에서는 호출되었던건 왜 그런지 모르겠음. 해결방법 tableVi..
-
[iOS] hidesSearchBarWhenScrolling가 작동하지 않을 때프로그래밍/iOS 2021. 3. 13. 23:17
문제 상황: navigationItem.hidesSearchBarWhenScrolling = true 위 코드를 사용해서 UISearchBar가 스크롤 할 때 사라지는 것을 기대했지만 사라지지 않음 해결 방법: 빨간색 박스가 그려져 있는 왼쪽사진이 처음 문제가 발생했을 때 구조고, 오른쪽은 해결했을 때의 구조임. 문제가 발생했을 때 content view아래에 toolbar와 scroll view가 같이 있는데, toolbar가 scroll view 순서가 뒤에 와 있음. 오른쪽 사진처럼 드래그 이벤트가 발생하는 scroll view를 순서를 맨 뒤로 보내면 해결됨.
-
[iOS] tableView.indexPath(for: UITableViewCell)이 nil이 반환될 때프로그래밍/iOS 2021. 3. 9. 01:05
indexPath(for:) Declaration func indexPath(for cell: UITableViewCell) -> IndexPath? 우선 셀은 지속적으로 재사용되고 테이블뷰에 의해 관리되고 있으므로 외부에서 cell을 직접참조를 해서 어떤 작업을 하는 것은 피해야한다. 원인: nil이 발생하는 원인은 아직 추가되지 않은 셀, 셀이 표시가 되지 않고 있음, indexPath가 범위를 벗어남 이 있다고 한다. 그러나 내 경우는 화면상에 셀이 보이고 있는 상태인데 계속 nil이 반환되었다. 정확히는 모르지만 셀 내부 컨텐츠뷰들을 수정하고나면 어떠한 이유로 인해서 nil이 반환하는 일이 생기는 것 같다. 조건: textView의 텍스트를 수정하지 않으면 nil이 발생하는 일이 없었다. 전후 상..
-
[iOS] Dynamic Font프로그래밍/iOS 2021. 2. 10. 15:00
1. 사진 위에 폰트가 정해진 비율에 맞춰서 배치가 되어야 할 때 1. 이미지뷰의 Aspect Ratio 속성에 체크 후 이미지 비율대로 입력 2. 이미지뷰와 레이블을 뷰로 감싸기 3. 레이블을 사진의 top, bottom에 정렬 4. 레이블의 bottom 쪽 constraint의 multiplier를 수정하여 적절한 위치에 배치 비율을 먹일 때 사진과 레이블을 동시 클릭후 설정해도 슈퍼뷰에 대한 크기로 비율이 먹게 됨. 그래서 뷰로 한번 더 감싸고 그 뷰의 크기를 조절한 후에 비율을 먹이는 방식으로 조절함 2. AutoShrink 설정할 때 1. 먼저 가장 큰 디바이스로 놓고 폰트 크기를 설정한다. 최소 폰트 사이즈 설정 / 현재 폰트에서 어느정도까지 축소 가능 과 같이, 현재 폰트에서 작아지는 방향에..