본문 바로가기

분류 전체보기

(65)
코딩테스트 연습 2020 KAKAO BLIND RECRUITMENT 문자열 압축 Swift func solution(_ s:String) -> Int { //s의 길이는 1 이상 1,000 이하입니다. //가장큰 아웃풋숫자인 1000을 디폴트로 줌 var outputInt : Int = 1000 //swift String 을 처리하기 복잡하기에 String 배열로 변경 var stringArray : [String] = s.map{ String($0) } //글자갯수제한 if(s.count > 1000){ return 0 //1글자짜리 텍스트 따로처리 }else if(s.count == 1){ return 1 }else{ //나눌수 있는 최대 크기는 string의 크기의 절반 이다. for count in (1...stringArray.count / 2) { var stringCount : [..
코딩테스트 연습2020 KAKAO BLIND RECRUITMENT괄호 변환 Swift import UIKit func solution(_ p:String) -> String { return finalFunction(p: p) } func makeUV(item :String) -> (String , String) { var count1 : Int = 0 var count2 : Int = 0 //균형잡힌 괄호 문자열 을 찾기 위해 앞에서 부터 ( 수를 찾음 for char in item { if(char == "("){ count1 += 1 }else{ count2 += 1 } // (의 수와 ) 수가 같다면 균형잡힌 괄호 문자열이기에 for 문을 멈추고 // U , V 를 배출 if(count1 == count2){ break } } //앞에서 부터 ( 의갯수 와 ) 의 갯수 에서 inde..
코딩테스트 - 해시 - 위장 Swift func solution(_ clothes:[[String]]) -> Int { //곱셈을 진행할 예정이라 기본값 1을 준다. var multipleLockCount : Int = 1 //옷종류와 해당 옷의 몇개의 옷종류가 있는지 저장하는 딕셔너리 var clothCounts : [String : Int] = [:] //리스트를 받으면 //0번은 옷의 이름 1번은 옷의 종류이다 for item in clothes { //옷의 종류가 이미 포함되어있다면 //옷의 종류를 늘리지 않고 옷 종류의 갯수를 올리고 if(clothCounts.contains{ $0.key == item[1] }){ simpleLockCount += 1 clothCounts[item[1]]! += 1 }else{ //처음 등록된 옷의..
2018 KAKAO BLIND RECRUITMENT 파일명 정렬 Swift Swift로 풀어보는 파일명 정렬 import UIKit typealias HNT = (String , String , String) //파일을 HEAD , NUMBER , TAIL 부분으로 나눠주는 로직 // func HEAD_NUMBER_TAIL_SLICE(_ item : String) -> HNT{ var Head : String = "" var Number : String = "" var HeadIndex : Int = 0 var NumberIndex : Int = 0 var Tail : String = "" //꼬리부분을 알아내기 위해 사용 let LetterPlus : [String] = [" ",".","-"] //받아온 String 을 배열 로 변경 let Name = item.map { ..
WKWebView MemoryLeak 해결 프로젝트가 웹뷰를 베이스로 진행하고있어 웹뷰를 구현을 한 후 메모리 디버깅을 해보니 웹뷰컨트롤러가 사라지지않고 계속 메모리에 남아있는 이슈를 발견하였다. 해당 문제를 Coordinator 패턴을 잘못 사용하였거나 ViewModel을 잘못 사용하여 Strong 하게 메모리가 연결되어 있어 메모리가 삭제되지 않았나 라는 의심이되어 메모리를 디버깅을 해보니 해당 Coordinator , ViewModel 의 문제는 전혀 아니였고 ViewController와 Strong하게 의존되어있는 프로젝트도 발견할 수 없어 무엇이 문제인가 한참 찾아보았는데 결론이 정말 허무했다. WkWebView에서 자바스크립트의 함수를 받기위한 WKScriptMessageHandler의 함수가 자체적으로 Strong하게 연결되어있어 M..
타입캐스팅 is , as 와 Any , AnyObject is , as를 알기위해 우선 MediaItem 클래스를 생성합니다. class MediaItem { var name: String init(name: String) { self.name = name } } 그 후 MediaItem 을 서브클래스로 가지는 Movie 와 Song 클래스를 만듭니다. class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: name) } } class Song: MediaItem { var artist: String init(name: String, artist: String) { self.artist = ..
Swift 함수형 프로그래밍 공부를 하면서 객체지향 , 함수형 등 프로그래밍을 들어봤지만 당연히 객체지향 프로그래밍을 사용하고 있고 함수형 프로그래밍을 해본적이 없다고 생각을 하고있었다 하지만 공부를 위해 그리고 다양한 견문을 넓히기 위해 함수형 프로그래밍을 검색해서 공부를 해보았는데 어디서 본적있는 코드들이 나오는게 아닌가 예를 들어 배열에서 사용하는 필터등 ... 나는 함수형 프로그래밍을 사용하면서 모르고 있었던거였다 상당히 창피했다. 그래서 본격적으로 함수형 프로그래밍에 대해 찾아보고 정리를 하기로 결심을 하고 이 글을 작성한다 함수형 프로그래밍이란? 1. 함수의 응용을 중요하게 생각한다. 2. 함수를 일급 객체로 다룬다 3. 코드의 실행과 결과값이 함수에 전달된 인자값으로만 결과를 만들어 내기때문에 상태값을 가지고있지않고 순..
Moya / RxMoya 사용해보기 Swift에서 Alamofire을 사용하다보면 직접 Router 만들거나 NetwokrManager 같은 클래스를 만들어서 사용합니다 그럴경우 네트워크 계층이 일반적으로 Moya를 사용하지 않을경우 통신계층 구조가 심플하지 못한 구조를 가질수 있습니다. 그런 부분들을 해소 해주는 것이 Moya라이브러리 입니다. Moya의 주요 목표는 Moya는 일반적으로 enum을 사용하여 네트워크 요청을 타입 안전한 방식으로 캡슐화하는데 초점을 맞춤 네트워킹 라이브러리로 네트워크 계층에서 작업할때 추가된 검색 가능성과 함께 컴파일 시간 보장등을 제공 합니다. Provider: Moya의 MoyaProvider는 모든 네트워크 서비스와 상호작용할때 만들고 사용할 주요한 객체입니다. 초기화할때 Moya Target을 가지..