전체 카테고리 225

[Data Structure] Bubble, Selection, Insertion Sort (Swift)

아주 기본적인 정렬들을 공부해볼게요 대표적으로 거품정렬(Bubble Sort) 선택정렬(Selection Sort) 삽입정렬(Insertion Sort) 이렇게 3가지가 있구요 각각 특징과 구현을 해볼거에요 거품정렬 정렬과정 인접한 두 원소의 대소를 비교해서 자리를 교환하면서 정렬해요 시간복잡도 O(n^2) func bubbleSort(arr: [Int]) -> [Int] { var arr = arr for i in arr.indices { // i번 시도 for j in 1.. arr[j] { // 스왑 let temp = arr[j] arr[j] = arr[j-1] arr[j-1] = temp } } } return arr } 선택정렬 정렬과정 Index 0부터 차례대로 해당 순서에 원소 넣을 위치를..

[Swift Algorithm] 프로그래머스 68646 풍선 터트리기 (월간 코드 챌린지 시즌1)

programmers.co.kr/learn/courses/30/lessons/68646 코딩테스트 연습 - 풍선 터트리기 [-16,27,65,-2,58,-92,-71,-68,-61,-33] 6 programmers.co.kr 풀이과정 문제 이웃된 값들중 큰값이 삭제 단 한번만 작은값을 삭제할 수 있고 삭제되지않는 풍선의 수를 구해라 현재 비교하려는 값이 삭제되지않는 경우 -> 어찌햇던 마지막에 양옆을 비교했을때 그 양옆의 수보다 작아야함 (셋중에 젤 작아야 남길수 있음) x번째를 남기고싶다면 [0.. n^2 실패... 마지막 현재 확인숫자 기준으로 왼쪽최솟값과 오른쪽 최솟값을 비교해서 그 둘보다 커야함 n^2으론 절대 불가능하니 n으로 해야했고(1,000,000^2 시간초과) 배열을 만들어서 왼쪽부터 비..

[Swift] Notification Center, Notification Queue

Notification Center의 post는 동기적으로 동작하죠 post a post b 를 했다면 a의 옵저버함수가 끝날때까지 b를 실행하지 않아요 옵저버함수가 실행이 오래걸린다면 마냥 기다릴순 없으니..! 비동기적인 API가 있는데요 바로바로 Notification Queue!! 가 있는데 한번 사용해보려구요 ㅎㅎ Notification Center의 버퍼다! 다른건 아니고 NotificationCenter에 들어오는 post를 관리해주는거라고생각해요 이벤트 등록을 할때 Notification Center를 이용해서 옵저버를 등록하거든요 ㅎㅎ 기본적인 사용법은 let center = NotificationCenter.default let queue = NotificationQueue.default..

iyOmSd/Title: Swift 2020.11.20

[Swift] Fastlane 자동화빌드 배포 CI/CD (2/2)

GitHub Action 코드를 작성, 테스트 및 배포하세요. 코드 검토, 지점 관리, 발행 트리징 작업 등을 원하는 방식으로 만드세요 자동화 프로세스를 만들 수 있어요 잘 모르겟으니 우선 제안해주는 swift용 workflow를 만들어볼게요 이렇게 생겻구요 on: 동작 알림받을 조건 (레포지토리에 푸시가되는 브렌치나 풀리퀘가 되는 브렌치기준) jobs: 수행할 동작을 설정해주는거에요 build: 작업이름 runs-on: 환경 steps: 동작수행목록 uses: 이미만들어진 action사용할때(GitAPI) name: 수행목록이름 run: 수행명령어 on의 이벤트 종류는 docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigg..

iyOmSd/Title: Swift 2020.11.19

[Swift] Fastlane 자동화빌드 배포 CI/CD (1/2)

CI / CD 어디선가 들어본적 있으신가요?? 이게무슨뜻일까요? CI (Continuous Integration) (빌드 테스트를 실시하는 프로세스) 통합 프로세스를 지속적으로 실시해주는거에요 CD (Continuous Deploy 혹은 Continuous Delivery) 프로덕션 환경으로 배포작업을 자동화하는것 앱에 적용한 변경사항이 버그 테스트를 거쳐 레포에 자동으로 업로드되고 언제든 실시간으로 배포가능 변경사항의 배포에 대한 비용 시간 위험을 줄일수 있어요 iOS앱을 배포하는 과정을 따라가보면 이게 왜 필요한지 필요성을 느낄수 있어요 저도 필요성을 너무 느껴서 글을쓰면서 처음으로 적용해보려구요 ㅎㅎ iOS앱 배포과정은 앱을 아카이브를 해요 - 아카이브하는 시간 앱을 앱컨넥트에 업로드하고 - 배포시..

iyOmSd/Title: Swift 2020.11.19

[Swift Algorithm] 프로그래머스 17676 추석 트래픽 (2018 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/17676 코딩테스트 연습 - [1차] 추석 트래픽 입력: [ 2016-09-15 20:59:57.421 0.351s, 2016-09-15 20:59:58.233 1.181s, 2016-09-15 20:59:58.299 0.8s, 2016-09-15 20:59:58.688 1.041s, 2016-09-15 20:59:59.591 1.412s, 2016-09-15 21:00:00.464 1.466s, 2016-09-15 21:00:00.741 1.581s, 2016-09-15 21:00:00.748 programmers.co.kr 풀이방법 처음에 문제를 잘못이해해서 잘못풀엇어요... 주어진입력은 완료된 시각이였어요.. 시작시간인줄..

[Swift Algorithm] 프로그래머스 17687 N진수 게임 (2018 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 풀이과정 요약 0부터 차례대로 알맞는 진법에 맞게 변환해서 문자열을 계속 이어가고 이때 변환된 문자열의 길이가 t * m 를 넘어가면 비효율적이기때문에 그 전에 종료 변환한 문자열에 p의 순서에 맞게 접근해서 t개 만큼 출력 처음 접근방법에는 while문으로 돌면서 입력받은 n(진법) 만큼의 나머지를 구해서 진법String을 구하고 계속 더해가는 식으로 저장해..

[Swift] Custom View 만들기

자신만의 뷰를 만드는 방법엔 2가지가 있어요 만들어놓고 가져다 쓰기 좋기 위함이죠! 1. Xib를 이용 2. 오로지 코드로만 작성 Xib이용 Xib이란 Xcode Interface Builder의 약자로 Nib 파일을 XML형식으로 변환한 파일이에요 XML로 이루어져있어서 소스코드를 좀 더 알아보기 편하겠죠 Nib를 사용하다가 추후에 나오게된 형식이죠 Nib이란 NeXTSTEP Interface Builder의 약자로 바이너리 형식의 파일이에요 유저 인터페이스를 저장하고 처리속도가 빨라요 Xib파일을 빌드하면 Nib으로 컴파일되고 그 파일을 배포하는 식이에요 Tableview나 CollectionView의 Cell을 Xib파일로 만드는 예시가 제일 쉬운 예시가 되겠네요 같은이름으로 Xib, Swift파일..

iyOmSd/Title: Swift 2020.11.12

[Swift] iOS 프레임워크 구조

iOS의 기본적인 구조는 이렇게 이루어져있어요 각 계층별로 하나하나 살펴볼게요 우선 최상위에 Cocoa / Cocoa Touch 가있는데 차이가뭘까요?? Cocoa라는 단어가 붙으면 우선 Objective-C Runtime을 기반으로 NSObject를 상속 받는 모든 클래스, 모든 객체를 가리킬 때 사용 하는 단어구요 Cocoa Framework는 Foundation, AppKit 프레임워크를 포함하고 macOS를 개발할 때 사용하는 프레임워크에요 Cocoa Touch Framework는 Cocoa가 붙었죠? 위에서 설명한거에 더해서 앱의 다양한 기능구현에 필요한 다양한 핵심프레임워크(UIKit, Foundation, CoreData, CoreAnimation…등)을 포함하는 최상위 레벨 프레임 워크에요..

iyOmSd/Title: Swift 2020.11.11

[Data Structure] 딕셔너리 구현해보기 Swift Dictionary

스위프트에서 딕셔너리는 자바나 일반 자료구조에서의 HashTable과 같은 개념에요 key-value로 이루어져있고 데이터 간에는 순서가 없죠 우선 HashTable이 뭔지 부터 알아볼까요?? HashTable 이란 key와 value의 쌍으로 이루어진 데이터 타입이에요 매핑하기전 원래값을 key, 매핑후 데이터 값을 hash value(hash code)라고 하며 그 hash value를 배열의 index로 사용하고 그 index에 value를 저장해서 사용하는 방식이에요 Hash함수란 해시 함수는 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수 왜 사용할까요?? 특정 key값에 해당하는 데이터를 바로 찾을 수 있어요 평균 시간 복잡도 O(1) 최악의 경우는 O(n) - 모든..