본문 바로가기
반응형

분류 전체보기109

[Algorithm/BOJ] 1931 - 회의실 배정 (Greedy) Swift 문제 풀이: 1. 시작하는 시간을 기준으로 오름차순 정렬 2. 끝나는 시간을 기준으로 오름차순 정렬 3. 끝나는 시간과 다음 시작 시간과 비교해서 작다면 카운트 증가 4. 회의 배열 끝까지 위 3번 반복 코드: import Foundation let n = Int(readLine()!)! var session = [(Int,Int)]() for _ in 0 ..< n { let s = readLine()!.split(separator: " ").map {Int(String($0))!} session.append((s[0],s[1])) } session.sort (by: { $0.0 < $1.0 }) session.sort(by: { $0.1 < $1.1 }) var temp = 0 var result =.. 2020. 12. 17.
[Algorithm/BOJ] 1541 - 잃어버린 괄호 (Greedy) Swift 문제 풀이: 1. 입력을 "-" 기준으로 분할한다. 2. "-" 이전은 무조건 + 이기 때문에 값들을 result에 더해준다. 3. "-" 이후의 값들을 분리해서 temp에 더해준다. 4. result-temp 출력하면 최솟값이 나온다. 코드: import Foundation var formula = readLine()!.split(separator: "-").map {String($0)} let first = formula[0].split(separator: "+").map {Int(String($0))!} var result = 0 for i in first { result += i } var temp = 0 for i in 1 ..< formula.count { let minus = formula[.. 2020. 12. 17.
[Algorithm/Programmers] 여행 경로(DFS/BFS) 제한 사항: 1. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. -> 목적지의 알파벳 순으로 정렬한다. 2. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. -> 모든 경로를 지나가지만 모든 경로가 이어져 있는 것은 아니다. 3. 주어진 항공권은 모두 사용해야 합니다. 4. 항상 ICN에서 출발한다. 코드: import Foundation func solution(_ tickets:[[String]]) -> [String] { var visited = Array(repeating: false, count: tickets.count) var start = "ICN" let sortedTickets = tickets.sorted(by: { $0[1] < $1[.. 2020. 12. 12.
[Algorithm/BOJ] 18405 - 경쟁적 전염 (BFS) Swift 문제 풀이: 1. 작은 번호부터 상, 하, 좌, 우 순서대로 바이러스 퍼트리기 1-1. 0이 아닌 바이러스가 퍼져 있다면 패스 2. 정해진 시간 후에는 원하는 칸의 바이러스 출력 2-1. 해당 위치의 바이러스가 없다면 0 출력 코드: import Foundation struct Object: Comparable { let num: Int let x: Int let y: Int let time: Int // 바이러스 번호 순서대로 정렬하기 위함 static func Bool { return lhs.num < rhs.num } } let nk = readLine()!.split(separator: " ").map {Int(String($0))!} le.. 2020. 12. 6.
[iOS] JSON 파싱 JSON 파싱하는 방법에 대해서 적어보겠습니다..! 우선 서버에 요청할 Request함수가 필요합니다. 아래 주석의 순서대로 함수를 만들어 줍니다. func performRequest(with urlString: String) { // 1. URL 만들기 if let url = URL(string: urlString) { // 2. URLSession 만들기 let session = URLSession(configuration: .default) // 3. session에 task 할당 let task = session.dataTask(with: url) { (data, response, error) in if error != nil { self.delegate?.didFailWithError(erro.. 2020. 12. 4.
[Algorithm] DFS/BFS Graph 그래프는 2가지 방식으로 표현할 수 있다. 1. 인접 행렬(Adjacency Matrix) : 2차원 배열로 그래프의 연결 관계를 표현하는 방식 2. 인접 리스트(Adjacency List) : 리스트로 그래프의 연결 관계를 표현하는 방식 DFS (Depth-First-Search) - 깊이 우선 탐색 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 스택 자료구조를 이용하여 구현한다. 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 2-1. 방문하지 않은 인접노드가 없다면 스택에서 최상단 노드를 꺼낸다. 3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. .. 2020. 12. 1.
[iOS] Dispatch Queue DispatchQueue 클래스: - 앱의 메인 스레드 또는 백그라운드 스레드에서 작업 실행을 직렬 또는 동시에 관리하는 객체입니다. - 애플리케이션이 블록 객체 형태로 작업을 제출할 수있는 FIFO 큐 선언 class DispatchQueue : DispatchObject 작업 항목을 담아 Queue에 추가하는 구조이며 작업은 시스템에 의해 관리되는 스레드 풀에서 실행됩니다. 작업 항목을 동기적 또는 비동기적으로 예약합니다. 동기적인 작업은 여러 가지 작업 항목이 쌓여있을 때 스레드를 호출해 하나 하나 작업 을 순서대로 실행합니다. 반면에, 비동기적인 작업은 DispatchQueue외 추가적인 스레드를 생성하여 작업을 추가한 뒤 DispatchQueue의 모든 동기적인 작업이 완료되기 전에 추가 스레드.. 2020. 11. 23.
[Algorithm/Programmers] 기능 개발 (스택/큐) Swift 문제 풀이: 1. 각 기능 별로 완성되는 기간 확인 2. 첫 기능의 완성 기간을 기준으로 그 다음 기능의 기간과 비교하여 작다면 같이 pop 3. 다음 기능의 완성 기간이 더 클 때까지 2번 반복 4. 모든 기능이 끝나지 않았다면 2번으로 돌아가서 반복 import Foundation //테스트 케이스 //var progresses = [93, 30, 55] //var speeds = [1, 30, 5] //var progresses = [95, 90, 99, 99, 80, 99] //var speeds = [1,1,1,1,1,1] func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] { let len = progresses.count var resul.. 2020. 11. 22.
[Swift] PS 시간 측정하기 swift언어로 문제를 풀다 보면 시간 초과가 뜨는 경우가 있어 시간 측정하는 방법을 기록합니다.. CFAbsoluteTimeGetCurrent()를 이용 import Foundation processTime{ // Code } func processTime(closure: () -> ()){ let start = CFAbsoluteTimeGetCurrent() closure() let processTime = CFAbsoluteTimeGetCurrent() - start print("경과 시간: \(processTime)") } 출처 https://www.hackingwithswift.com/example-code/system/measuring-execution-speed-using-cfabsolute.. 2020. 11. 20.
반응형