Test (77) 썸네일형 리스트형 [Swift] 병합 정렬 병합 정렬(merge sort)는 배열을 나누어 정렬한 후 병합하는 작업을 반복하는 알고리즘이다. 아래는 두 배열을 비교하며 정렬하는 코드이다.func merge(_ array1: [Int], _ array2: [Int]) -> [Int] { var result: [Int] = [] var array1Index = 0 var array2Index = 0 while array1Index 이 코드는 N번 whle문이 작동하기 때문에 시간 복잡도는 O(N)이다. 코드만 보면 이것은 정렬하는 것이 아니라 정렬된 배열을 합치는 과정처럼 보일 수 있다. 분할 정복은(divide & conquer) 문제를 쪼개서 일부분들을 계속 해결하고, 어느새 전체가 해결되는 전략이다. 분할정.. [Swift] 버블 정렬, 선택 정렬, 삽입 정렬 버블 정렬(Bubble Sort)은 첫 번째 와 두 번째를, 두 번째와 세 번째를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째와 마지막을 비교하여 교환하면서 자료를 정렬하는 방식이다.func bubbleSort(array: [Int]) -> [Int]{ var array = array var cnt = array.count for i in 0.. array[j+1]){ array.swapAt(j, j+1) } } } return array} 첫 번째 for문에서 시간복잡도 O(N), 두 번째 for문에서도 시간복잡도 O(N) 만큼 소요되어 최종 시간복잡도는 O(N^2)이다.선택 정렬(Sele.. [Swift] 이진탐색 1 ~ 20 사이에 숫자에 14가 있는지 없는지 확인을 하기 위해 코드를 작성하는 중이다.let array = [Int](1...16)let num = 14func findNumIndex(_ array: [Int], _ num: Int) -> Bool { for n in array{ if(n == num){ return true } } return false} 만약에 이렇게 작성한다면 찾을 수 있겠다만 모든 배열의 수를 확인해보면서 찾아야하기 때문에 O(N) 만큼 시간복잡도가 걸릴 것이다.이것을 줄이기 위해 나온 방법이 이진 탐색(Binary Search)이다. 이진탐색은 최소값의 인덱스와 최대값의 인덱스 그리고 현재 인덱스를 잡고 시도했을 때.. [Swift] LinkedList LinkedList (연결 리스트)LinkedList 란 하나로 데이터 요소를 연결된 노드로 표현하는 방식 node(노드) : Linked List의 구성 요소, 데이터와 다음 노드가 무엇인지에 대한 정보(포인터)를 가지고 있음pointer(포인터) : 노드를 연결하는 역할. 각 노드는 다음 노드를 가르키고 있는 정보(포인터)를 가지고 있음head(헤드) : Linked List의 첫번째 노드를 가르키는 포인터data : 각 노드가 저장하는 실제 값 또는 객체Array vs LinkedList그러면 LinkedList와 우리가 평소에 사용하는 Array(배열)과 차이는 무엇일까? Array는 특정 index를 알고 있을 경우 데이터를 신속하게 접근할 수 있고, 새로운 요소 삽입이 빠르지만 크기가 고정되고.. [BaekJoon] 1316 그룹 단어 체커 문제 풀이Stack 개념과 동일하다.스택(Stack)은 마지막으로 입력 데이터가 먼저 출력되는 방식이다.(LIFO : Last in First out)func stack() -> Bool { let word = readLine()! var stack: [Character] = [] word.forEach { if !stack.isEmpty && stack.last! == $0 { // 마지막 데이터 제거 stack.removeLast() } // 데이터 추가 stack.append($0) } return Set(stack).count == stack.count}let n = Int(readLi.. [백준] 별찍기 7 정답let n = Int(readLine()!)!for i in 1...n { let star = String(repeating: " ", count: n - i) + String(repeating: "*", count: 2 * i - 1) print(star)}for i in 1.. String(repeating:count:)를 이용해서 풀이 init(repeating:count:) | Apple Developer DocumentationCreates a new string representing the given string repeated the specified number of times.developer.apple.com출처 만도스의 개발 일기장 dev-mandos.tistory.com [Backjoon] 10810 공 넣기 https://www.acmicpc.net/problem/10810 let input = readLine()!.split(separator: " ").map { Int($0)! }let n = input[0], m = input[1]var basket = [Int](repeating: 0, count: n + 1)for _ in 0.. 출처 [BOJ] 백준 10810 공 넣기 (Swift)문제 https://www.acmicpc.net/problem/10810 10810번: 공 넣기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매dev-mandos.tistory.com [BaekJoon] 아스키 코드 - 11654번 https://www.acmicpc.net/problem/11654import Foundationlet chars = readLine()!.map{$0}for ch in chars { print(ch.asciiValue!)} asciiValue | Apple Developer DocumentationThe ASCII encoding value of this character, if it is an ASCII character.developer.apple.com 이전 1 2 3 4 5 ··· 10 다음