[Swift] 백준2609
·
📝 코테/BOJ
import Foundation let line = readLine()!.components(separatedBy: " ").map { Int($0)! } var n = line[0] var m = line[1] func getGCD(n1: Int, n2: Int) -> Int { if n2 == 0 { return n1 } else { return getGCD(n1: n2, n2: n1 % n2) } } func getLCM(num1: Int, num2: Int) -> Int { return num1 * num2 / getGCD(n1: num1, n2: num2) } print(getGCD(n1: n, n2: m)) print(getLCM(num1: n, num2: m))
[Swift] 백준2231
·
📝 코테/BOJ
import Foundation /// 분해합 : N + (N의 각 자리수의 합) /// M : M의 분해합이 N인 경우 'N의 생성자' 라고함 /// 자연수 N이 주어질 때 N의 가장 작은 생성자를 구해라. let N = Int(readLine()!)! var arr = [Int]() for M in 1...N { if M.decomposition == N { arr.append(M) } } print(arr.min() ?? 0) extension Int { var decomposition: Int { var num = self var sum = num while true { if num < 10 { sum += num break } else { sum += num % 10 num = num / 10 ..
[Swift] 큐(Queue) 구현하기
·
💻 CS/자료구조
큐 선입선출(FIFO) : 먼저들어온 놈이 먼저 나가는 자료구조 Swift 에서의 구현 struct Queue { private var queue: [T] = [] public var count: Int { return queue.count } public var isEmpty: Bool { return queue.isEmpty } public mutating func enqueue(_ element: T) { queue.append(element) } public mutating func dequeue() -> T? { return isEmpty ? nil : queue.removeFirst() } } 그러나 이 방법은 dequeue시에 element들이 자리를 당기는 과정에서 O(n)의 시간복잡도가 ..
[Swift] 백준2164
·
📝 코테/BOJ
import Foundation /// 카드는 1 ~ N까지 번호 붙어있음 /// 1번 카드가 제일 위, N번카드가 제일 아래 /// 아래 사항을 반복 /// 1. 제일 위의 카드를 바닥에 버림 /// 2. 제일 위의 카드를 제일 아래 카드 밑으로 옮김 /// 마지막으로 남게되는 카드는 뭐냐? let N = Int(readLine()!)! var cards = Array(1...N) var queue = Queue() for i in 1...N { queue.enqueue(i) } while queue.count >= 2 { queue.dequeue() if let dequeue = queue.dequeue() { queue.enqueue(dequeue) } } print(queue.dequeue()!)..
[Swift] 백준1966
·
📝 코테/BOJ
import Foundation /// N - 테스트 케이스 개수 /// n - 문서의 개수 /// m - 현재 Queue에서 몇번째로 놓여있는지 나타내는 정수 (이 문서가 몇번째로 인쇄되었는지 찾아야함) /// /// 프린터 작동방식 /// 1. 현재 Queue의 가장 앞에 있는 문서의 '중요도' 확인 /// 2. 나머지 문서들 중 중요도가 높은 문서가 있으면 맨뒤로 보내버림 그렇지않다면 바로 인쇄 let N = Int(readLine()!)! for _ in 0..
UIView의 Drawing Cycle
·
🍎 iOS/UIkit
RunLoop 뷰의 업데이트를 관리하며 계속 반복해서 실행된다. Update Cycle 1/60초의 주기마다 화면을 다시 그려준다. Layout, Display, Constraints를 업데이트 한다. Main Run Loop 사용자의 입력 이벤트를 처리하고 적절한 응답을 트리거한다. Main Run Loop의 마지막 단계에서는 Update Cycle이 발생한다. Drawing Cycle 1. 앱이 시작될때 앱을 담당하는 Main Run Loop가 생기고 2. Main Run Loop는 사용자의 입력 이벤트를 처리하고 응답을 트리거한다. 3. Main Run Loop의 마지막 단계에 Update Cycle이 발생하여 화면이 다시 그려진다. (필요한 경우 뷰를 전체적으로 다시 그림) Update cycl..
App Lifecycle
·
🍎 iOS/UIkit
앱의 생명주기를 공부하는 이유 앱의 비활성화, 백그라운드, 종료 시점을 파악하기 위해 공부한다. iOS13이후 iOS13 이후부터는 SceneDelegate.swift에서 장면 기반의 앱의 생명주기를 다룬다. SceneDelegate 내부의 메서드들을 통해 시점을 파악할 수 있다. Unattached scene이 아직 연결되지 않은 상태 Foreground inactive 앱이 foreground에서 실행중이지만 아무런 이벤트를 받지 않고 있는 상태 Background 앱이 Background에 있으며 실행되는 코드가 있는 상태 대부분 앱은 suspended상태로 이행하는 도중에 일시적으로 이 상태에 진입하지만 파일 다운로드, 업로드 등 특정 시간동안 이 상태로 남아있게 되는 경우도 있다. Suspend..
ViewController LifeCycle
·
🍎 iOS/UIkit
시점을 중심으로 기억해야한다. viewDidLoad 뷰가 생성되었을 때 한번만 호출되며, 스토리보드상의 뷰들과 연결이 끝난 시점을 의미한다. viewWillAppear 뷰가 화면에 나타날때마다 계속 호출되며, 실제 스크린에 뷰가 나타나기 전에 호출된다. viewDidAppear 실제 스크린에 뷰가 나타난 후에 호출된다. viewWillDisAppear 실제 스크린에 뷰가 사라지기 전에 호출된다. viewDidDisappear 실제 스크린에 뷰가 사라진 후에 호출된다. 메모리에서 없어진 것은 아니다.
메모리 구조
·
💻 CS/자료구조
메모리 모델 stack 영역 프로그램이 자동으로 사용하는 메모리 영역이다. 함수호출과 관계되는 지역변수와 매개변수가 저장된다. 함수 호출 시 생성되며, 함수가 끝나면 반환된다. stack 사이즈는 각 프로세스마다 할당되지만 프로세스가 메모리에 로드될 때 stack 사이즈가 고정되어 있어 런타임 시 stack 사이즈를 바꿀 수 없다. 명령 실행 시 자동으로 증가 or 감소하기 때문에 보통 메모리의 마지막 번지를 지정한다. heap 영역 필요에 의해 동적으로 할당할 때 사용하는 메모리 영역이다. C에서 malloc(), calloc() 등의 함수를 사용하여 메모리 크기를 할당할 수 있다. 메모리 주소 값에 의해서만 참조되는 영역이다. stack영역과 heap영역은 사실 같은 공간을 공유한다. heap이 메모..
캐시
·
💻 CS/운영체제
캐시? 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 접근시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶을 때 사용한다. 캐시에 데이터를 미리 복사해두면 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있다. 캐싱은 어떻게 작동할까? 캐시의 데이터는 일반적으로 RAM과 같이 빠르게 접근할 수 있는 하드웨어에 저장된다. 소프트웨어 구성 요소와 함께 사용될 수 도 있다. 캐시의 주 목적은 더 느린 기본 스토리지 계층에 접근해야하는 필요를 줄여서 데이터 검색의 성능을 높이는 것이다. 속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 ..
JerryiOS
'분류 전체보기' 카테고리의 글 목록 (12 Page)