Algorithm123 [Swift][BruteForce] 백준 10972번(다음순열) 요구능력 : 순열에 대한 이해를 하고 있는가 코드설명 : 문제에 나와있는 N = 3일때 만으로는 규칙을 보기 애매하다. N = 4일 때를 기준으로 보자. 1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 3 1 4 3 2 . . 이 있다. 다음순열을 구하는데에는 내가 공부하면서 봐온바로는 2가지가 있다. 1. 앞에서부터 뒤로 탐색하는 방법 2. 뒤에서부터 앞으로 탐색하는 방법 아래의 코드도 2번방법으로 쉽게 변경가능하지만 1번방법으로 하겠습니다. 위의 나열되어있는 수 중에서 1 3 4 2를 보자. 1 3 4 2 -> 1 4 2 3 이된다. 이걸 아래 알고리즘으로 설명하기위해 첫번째 for문부터 살펴보면, 아래 코드를 보면 맨앞에서 맨뒤까지 i = 0일때, 1씩증가하는 i가 arr[i] .. 2021. 9. 7. [Swift] 백준 10816번(숫자 카드2) 요구능력 : 딕셔너리의 이해 코드설명 : Dictionary를 사용하면 배열안에있는 숫자, 문자를 찾고 수를 세는데 아주유용하다. 후기 : 이진탐색으로 접근해서 열심히 풀어봤지만 lowerBound와 upperBound를 사용해봐도 시간초과를 피할 방법이 없어서 Dictionary를 활용하여 접근했다. let n = Int(readLine()!)! var nArr = readLine()!.split(separator: " ").map{Int(String($0))!} let m = Int(readLine()!) let mArr = readLine()!.split(separator: " ").map{Int(String($0))!} var dict = [Int: Int]() var result: [Int] =.. 2021. 9. 3. [Swift][이진탐색] 백준 1920번 (수 찾기) 요구능력 : 이진탐색 코드설명 : 수를 브루트포스로 찾는다는 생각을 할 수도 있다. 하지만 문제에서 정수의범위가 어마어마하게 크기 때문에 브루트포스를 사용하면 시간초과가난다. 이럴때 생각할 수 있는게 이진탐색(BinarySearch)이다. 카테고리에 이분탐색이라고 적혀있... 1. 이진탐색을 하기위한 배열을 정렬해준다. 그래야 시작, 중간, 끝값을 이용해서 이진탐색이 가능하다. 2. start값은 맨 처음부터 시작해야하기 때문에 초기에는 0을 삽입해준다. end 값은 맨 뒤부터 시작해야하기 때문에 초기에는 [배열의 크기 - 1]만큼 삽입해준다. 3. start값이 end값을 넘어간다면 없는 목표한 target이 없는 것이므로 멈춰주도록 조건을 설정해준다. 4. mid값은 소수점을 버린 start와 end.. 2021. 9. 2. [Swift][Deque] 백준 10866번 (덱) 요구능력 : 덱(Deque) 코드설명 : 덱을 구현하였다. 후기 : 큐와 많이 비슷하다. let n = Int(readLine()!)! var deque: [Int] = [] func push_front(_ x: Int) { if deque.isEmpty { deque.append(x) }else { deque.reverse() deque.append(x) deque.reverse() } } func push_back(_ x: Int) { deque.append(x) } func pop_front() -> Int { if deque.isEmpty { return -1 }else { return deque.removeFirst() } } func pop_back() -> Int { if deque.isEm.. 2021. 9. 1. 이전 1 ··· 15 16 17 18 19 20 21 ··· 31 다음