분류 전체보기
-
[Swift] 기능개발 코딩테스트 프로그래머스개발/Swift 2022. 1. 4. 16:50
작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자연수입니다. 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다. 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses..
-
[Swift] 베스트앨범 프로그래머스 코딩테스트개발/Swift 2022. 1. 3. 18:41
속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 장르에 속한 곡이 하나라면, 하나의 곡만 선택합니다. 모든 장르는 재생된 횟수가 다릅니다. 우선 문제 해결을 위해 주어진 장르와 재생수를 가지고 dictionary로 만든후에 해당 dictionary를 총 재생수를 기준으로 정렬 장르 내 재생수 에 따른 정렬 (재생수 같으면 고유번호참조) 앞에서 두개 뽑아서 배열에 넣어서 리턴(갯수 1개면 1개만 넣어줌) 우선 주어진값을 가지고 Dictionary를 만든다. 딕셔너리는 이런구조로 만들어 져야한다. ["classic": [2: 150, 0: 500, 3: 800], "po..
-
[Swift] 위장 프로그래머스 코딩테스트개발/Swift 2022. 1. 2. 15:03
우선 주어진 배열을 딕셔너리 타입으로 변환한다. 딕셔너리는 의상의 종류(키) : 의상의 갯수(값) 으로 구성된다. { "headgear" : 2 , "eyewear": 1 } 위 의상들을 조합할수있는 코디의 개수는 5개다. 모자는 총 두개이므로 3가지의 경우가 나온다. 1번 모자를쓰거나 2번 모자를 쓰거나 둘다 안쓸수도있다. 안경은 총 한개이므로 2가지 경우가 나온다. 1번 안경을 쓰거나 안쓸수도있다. 그럼 이 두개를 곱해주면 된다. 3 *2 = 6 그런데 아무거도 안입는 경우는 없다하니 -1 을 해주면 된다. 코드로 바꿔보자. func solution(_ clothes:[[String]]) -> Int { var dict = [String:Int]() var count = 1 // 곱셈을 사용해야하므로..
-
존재하는 프로젝트cocoapod private용으로 배포 하기개발/Swift 2021. 12. 27. 17:33
구글검색후 찾았던 cocoapod 배포 방법과 달리 나는 이미 존재 하는 프로젝트를 cocoapod 으로 배포 하고싶었다. 대부분의 예시에서는 애초에 시작을 프레임워크로 만들어 제공된 템플릿 안에서 구현하였다. 결론 부터 말하자면 이렇게 하는게 맞았다. 삽질하기(기존 프로젝트 기존 깃에서 그냥 올리기) 하지만 좀 복잡하기보다 간단하게 해결하고싶어서 해당 방법을 찾았었다. 존재하는 프로젝트 경로에서 pod spec create POD이름 를 실행한다. 그러면 POD이름.podspec 파일이 생긴다. podspec 을 보면 여러 세팅값들이 있는데 이중에서 내 프로젝트의 git 주소를 넣어준다. s.source = { :git => '깃주소', :tag => s.version.to_s } 변경 후에 pod s..
-
[Swift] Dynamic Dispatch / Static Dispatch개발/Swift 2021. 12. 20. 17:03
ios 면접 질문 리스트를 보던중 이런 문제를 보았다. class B: A 일 때 A와 B 둘다 func one()이라는 함수가 있으면 B 인스턴스나 A 인스턴스에서 이 함수를 호출했을때 둘 중 어떤 함수를 호출할지 어떻게 판단하는가? B는 자식 클래스, A는 부모 클래스이다 B와 A 모두 one()함수를 정의했다면 B(인스턴스).one()을 호출하면 B의 함수를 A.one()을 호출하면 A의 함수를 호출할것이다. 그러면 만약 자식 클래스인 B가 상속을 받지 않았다면? one 함수를 오버라이딩 하지 않았다면? 어떻게 어떤 함수를 쓸지 결정할수 있을까? 이게 가능한 것은 어떤 함수를 호출할지 컴파일 단계에서 결정짓지 않아서 가능하다. let instanceA = A() instanceA.one() //결정..
-
[Swift] 조이스틱 프로그래머스 코딩테스트카테고리 없음 2021. 12. 9. 17:26
뻘짓 기록 우선 문제를 해결하기 위해서는 최소 횟수를 낼 "방법" 을 찾아야한다. 어차피 한글자씩 다 바꿔줘야하니 첫위치부터 오른쪽으로 순차적으로 바꾸면 되지 싶을까 했지만 역시 예외상황이 있었다. 예시의 JAZ처럼 가운데 A가있는 경우 오른쪽으로 두번 가는게 아니라 왼쪽으로 한번만 움직이면 해결이 가능하다. 이런 예외상황을 좀 더 찾아보고 패턴을 찾기로 했다. 그리고 왼쪽으로 갔다가 다시 오른쪽 혹은 오른쪽 갔다가 왼쪽은 비효율적이라 그럴일은 없다 판단하고 그럴경우 두가지 경우만 나온다 왼쪽으로 이동하면서 문자를 바꿔준다. 오른쪽으로 이동하면서 문자를 바꿔준다. JAZ //왼쪽 이 이득 JAZZ //왼쪽 이 이득 JJAZZ // 둘다 같음 JJJAZZZ //오른쪽이 이득 JAA //안움직여야 이득 위 ..
-
[Swift] frame이 다시 초기화 되는 오류 - translatesAutoresizingMaskIntoConstraints개발/Swift 2021. 12. 8. 17:43
요구사항 UI 의 사이즈가 isExpaned 상태에 따라 커졌다 작아져야함 Error showTwoButtonDialog를 실행하여 팝업을 띄우는경우 UI의 사이즈가 초기화 되어 isExpanded 상태와 반대가 되어버려 UI 오류가 발생함 1. 사이즈 변경 버튼 -> 모듈맵 커짐 - isExpaned = true 2. showPopup -> 모듈맵 보통 크기로 돌아옴 - isExpanded = true 3. 사이즈 변경 버튼 -> 모듈맵 작아짐 - isExpanded = false uiview 의 사이즈를 변경하는 함수 private func expandModuleMap(){ let currentFrame = self.moduleMapView.frame let newFrame = self.codingV..
-
[Swift] UIResponder 대략 알아가기개발/Swift 2021. 12. 1. 18:04
uiresponder 는 앱 이벤트 처리 백본을 구성한다? 무슨말인지 모르겠고 일단 이벤트에 대한 응답 처리를 위한 클래스임 UIApplication UIViewcontroller UIView 는 모두 리스폰더인데 (상위 클래스가 UIResponder임) 이벤트가 발생하면 앱의 리스폰더 객체에 전달함 (vc , view에 전달함) 터치, 모션 원격 등 이벤트를 처리하려면 리스폰더(vc,view) 가 해당 메소드를 오버라이드 하면댐 touchesBegan(_:with:) 등등... 만약 주어진 리스폰더가 이벤트를 처리하지 않는 경우 리스폰더 체인의 다음 이벤트로 해당 이벤트를 전달한다 → 앱이 이벤트를 받으면 그 이벤트를 처리할 대상을 찾으려고 계속 전달 과정을 거침 → 리스폰더가 처리 하지 않으면 (리스..