안녕하세요. 린다입니다.오늘은 정렬 두번째.. 병합(분할)정렬과 기수 정렬에 대해서 정리해볼게요! 병합 정렬데이터를 분할하고, 분할한 집합을 정렬하며 합치는 알고리즘O(nlogn)의 시간 복잡도) N번의 데이터 접근이 logN 번 일어남경주 문제에서 활용됨하나의 배열을 가장 작은 크기까지 분할한 다음 2개의 포인터를 가지고각 포인터 값의 비교를 통하여 정렬 후 합치고를 반복하는 기법Two Pointer를 활용한 코드// MARK: - 병합 정렬func mergeSort(_ array: inout [Int], _ left: Int, _ right: Int) -> [Int] { if (left 기수 정렬값이 아니라 요소의 자릿수를 비교해서 정렬하는 기법1의 자리 → 10의 자리 → 100의 자리 ..
공부기록

백준 1436https://www.acmicpc.net/problem/1436 문제 이해)맨 처음에 문제를 읽었을 때는 그냥 N-1해서 666 붙이면 되는거 아닌가? 했는데 아닙니다..N번째를 포함한 영화 제목을 찾아야 하는 문제였어요.즉, N이 입력되면 N이 들어가는 영화의 제목을 출력하는 것 2번째 영화가 아니라 N이 들어가는 영화의 제목을 출력 하는 것 쉽게 풀어보자면,첫 숫자가 666이 되고, 666 += 1 씩해가면서 666이 연속으로 나오는 것을 찾아야 합니다.N = 2라면 666 +=1 을 했을 때 667~900까지 없고 1590없고,1600없다가 1666에서 숫자 N인 1을 발견! 그래서 리턴값이 1666이 되는 패턴입니다. 브루트포스 분류에 있는 만큼 완전 탐색을 통해서 쉽게 풀 수..

안녕하세요. 린다입니다.오늘은 간단하게 알고리즘의 기초인 정렬 알고리즘 중버블, 선택, 삽입, 퀵 정렬에 대해서 정리해볼게요! 버블 정렬데이터의 인접요소끼리 비교하여 swap 연산을 수행하여 정렬하는 기법루프를 돌면서 연산 수행시간복잡도 O(n^2)let array = [99, 98, 97, 96]func bubbleSort(_ array: [Int]) -> [Int] { var bubbleArray = array let n = bubbleArray.count for i in 0.. bubbleArray[j+1] { bubbleArray.swapAt(j, j+1)// let temp = bubbleArray[j]// ..

백준 큐, 스택 알고리즘 풀이 (24511) https://www.acmicpc.net/problem/24511 문제를 손으로 직접 써가면서 풀다보면Stack은 변화가 없고 Queue에서만 변화가 있다는 걸 알 수 있음그래서 Queue만 처리해주면 됨! "Queue는 선입선출 + 들어오는 값의 크기인 n만큼 Output도 생성됨"1-4까지 뒤부터 차례대로 Queue에 먼저 들어가 있는 원소들이 빠지기 때문에 그 값들을 처리하고 생각하면 됩니다. 그래서 ..첫번째 원소가 4인 큐에 있는 원소부터 빠지기 때문에answer = [Int]() 배열이 있을 때Queue안에 있는 원소들을 모두 추가하고answer의 크기가 input 크기에 비해 부족하다면 그 값 만큼 input 에서 removefirst()를 해..

안녕하세요. 린다입니다. 오늘은 면접때 탈탈 털리고 온 ARC를 톺아봅시다.. ARC란.. Auto Reference Counting Swift는 RC로 메모리를 관리함 == Reference Count로 관리한다는 의미 메모리의 참조횟수를 계산하여, 참조 횟수가 0이되면 더이상 사용하지 않는 메모리라 생각하여 해제함 즉, 모든 인스턴스는 자신의 RC 값을 가지고 있음 (인스턴스 생성 시 힙에 같이 저장됨) 이런 ARC 카운팅을 확인할 수 있는 방법이 있는데 바로 CFGetRetainCount 임 → “Core Foundation 객체”의 참조 횟수를 반환함 https://developer.apple.com/documentation/corefoundation/1521288-cfgetretaincount ..
안녕하세요. 린다입니다. 예전에 정리했던 뷰의 생명주기에 대해서 더 자세하게 정리해보았어요. navigationController를 사용해서 완전히 push로 이동하는 경우와 present를 사용하여 모달로 이동하는 경우로 나누어서 정리했습니다. 구현상황) FirstViewController → 버튼 tapped → SecondViewController + navigationController를 사용하여 완전히 push로 이동하는 경우 출력 결과 🔥 FirstViewController viewDidLoad 🔥 FirstViewController viewWillAppear 🔥 FirstViewController viewDidAppear button Tapped!! 🍀 SecondViewController..