적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

분류 전체보기 568

[Swift 알고리즘] 백준 1920 수 찾기

백준 1920 수 찾기 binary search 이분탐색 1단계 문제 : N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 : 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000) 다음 줄에는 N개의 정수 A[1], A[2], …, A[N] 다음 줄에는 M(1 ≤ M ≤ 100,000) 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 : M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 1차 시도 시간초과 실패 .contains 의 시간복잡도는 O(n)으로 다음과 같이 for문 안에 사용..

Algorithm/Baekjoon 2022.12.31

[Swift] 객체 간 소통 및 이벤트 전달 Delegate / NotificationCenter / KVO

객체 간의 소통할 때, 결합도를 낮추고 독립적으로 작동할 수 있도록 이벤트 전달을 도와주는 방법들. delegate가 명시적으로 쓸 수 있어 좋음. 작성할 코드가 많아서 구현이 상대적으로 어렵다. NotificationCenter는 사용이 간편하고, 다수의 객체들에게 동시에 이벤트 발생을 알려주기에 편리하지만 Callback techniques in Cocoa - delegation - NotificationCenter - Key-Value Observing 세 가지 패턴의 등장 배경 to allow communication between our controllers, without the need to have excessive coupling. 하나의 객체가 다른 객체와 소통은 하지만 묶이기(coup..

[Cocoa Design Pattern] KVO: Key-Value Observing

Key-Value Observing이란 객체의 프로퍼티 변경 사항을 다른 객체에 알리기 위해 사용하는 프로그래밍 패턴. kvo는 Swift 상에서는 didSet이나 willSet 같은 것으로 충분히 대체가 가능할 것 같아 굳이 써야하나 싶은 패턴인 것 같다. KVO: Key-Value Observing 이란? Cocoa programming pattern you use to notify objects about changes to properties of other objects. It’s useful for communicating changes between logically separated parts of your app—such as between models and views. You can ..

[Cocoa Design Pattern] Singleton Pattern

싱글톤 패턴이란 인스턴스를 하나만 생성하여 어디에서든지 참조할 수 있도록 하는 객체 생성 패턴.오디오북 앱에서 뮤직 플레이어를 싱글톤으로 하나만 생성하여 재생 관련 메서드들을 처리한 경험이 있는데,이처럼 앱 내에서 공용으로 사용하고 싶은 기능이나 리소스를 싱글톤으로 만들어 인스턴스를 공유할 수 있고, 여러번 호출하더라도 인스턴스가 처음 생성될 때에만 메모리에 할당되기 때문에 메모리도 절약할 수 있다는 장점이 있다.  싱글톤 패턴이란?Provide access to a shared resource using a single, shared class instance.어떤 기능이나 리소스를 앱 내에서 공용으로 사용하고 싶을 때, 해당 인스턴스를 하나만 생성하여 어디에서든지 참조하고 공유할 수 있도록 하는 객체..

[Cocoa Design Pattern] Delegation Pattern

딜리게이트 패턴이란 딜리게이트 패턴이란? 델리게이트는 어떤 객체가 해야 하는 일을 부분적으로 확장해서 대신 처리를 한다. 객체는 Delegate라는 헬퍼 객체를 만들어 권한을 위임함으로써 요청을 처리 delegate는 대신 처리를 수행할 객체와 처리를 요청하는 객체로 구성된다? 왜 사용? to Customize Object Behavior 코드를 재사용하고 유지보수하기 쉬워진다? delegate는 일을 시킬 뿐, 어떻게 처리해야 하는지 일의 처리 방법은 그 일을 수행하는 객체에 구현. 어떤 일을 해야 하는지 미리 정해놓기만 하고, 처리를 할 때 상황에 맞는 코드를 작성하면 된다. 예를 들어 동일한 작업인데도 불구하고 객체마다 다른 내용을 처리해야할 때, 프로토콜에는 어떤 일을 해야 하는지 미리 정해놓기만..

Design Pattern 디자인 패턴이란?

디자인 패턴이란? 디자인 패턴은 소프트웨어를 개발할 때 발생하는 다양한 문제에 대한 재사용 가능한 템플릿 해결방법 디자인 패턴의 종류 1. Creational Design Pattern 2. Structural Design Pattern 3. Behavioral Design Pattern ( + architectural patterns ) Creational Design Pattern provides the object or classes creation mechanism that enhance the flexibilities and reusability of the existing code. They reduce the dependency and controlling how the use interac..

컴퓨터시스템 2022.12.20

티스토리에 수식 입력하는 방법

시간복잡도 포스팅 하다가 \(log_2n\) 의 밑 표기가 log2n 으로 밖에 안돼서 수식 입력하는 법을 찾아보게 되었다. 1. MathJax 설정 티스토리 [블로그 관리 > 스킨 편집 > HTML 편집] 들어가서 사이에 아래의 스크립트를 붙여넣고 적용해주면 된다. 2. 사용법 - inline 사용법 (문장 안에서 수식 사용할 때) : \( 사이에 수식 입력 - block 사용법 (단독 수식으로 사용할 때) : $$ 사이에 수식 입력 참고 : inline 모드 / block 모드 https://domybestinlife.tistory.com/100 티스토리에 수식(Equation) 입력하는 방법 논문에는 정말 많은 수식들이 등장하는데 이를 블로그에 적기 위한 방법을 적어 보았습니다 생각보다 간단하니 한..

웹 개발 2022.12.16

[iOS] Bounds와 Frame의 차이점

Frame은 상위뷰 기준, Bounds는 자기 자신을 기준으로 좌표를 나타낸다. Frame : 상위뷰의 좌표 시스템에서 뷰의 위치와 크기를 나타냄 Bounds : 자신의 좌표 시스템에서 뷰의 위치와 크기를 나타냄 frame은 UIView의 위치나 크기를 설정할 때 사용한다. 스토리보드에서 우측에 X좌표와 Y좌표가 frame의 좌표. bounds는 View의 크기를 알고 싶거나 View내부에 그림을 그릴 때 사용한다.

알고리즘 시간복잡도 분석

input n에 대하여 가장 높은 차수 O(1) 상수 시간 constant time O(n) 선형 시간 linear time ex) 반복문, 반복문이 여러개(O(n)에 수렴) O(n^2) quadratic time ex) 반복문이 중첩 O(log n) 로그 시간 log time : 입력 크기에 따른 실행 횟수의 변화가 다양한 경우. ex) 이진 탐색, for (int i = 1; i \(log_2n\) O(n log n) 선형 로그 시간 : 입력 크기의 변수가 여러 개인 경우 : O(n log m) ex) O(n) 반복문 + log m 반복문 중첩 => n log m 재귀 함수의 시간 복잡도 분석 쉬운 경우 : 팩토리얼, 합병 정렬(merge sort) - 팩토리얼: T(n) = T(n - 1) + 1 ..

728x90
반응형