목록전체 글 (218)
Where who wants to meet someone
난이도 실버 III 문제 https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 내 답안 let nm = readLine()!.split(separator: " ").map { Int($0)! } let n = nm[0] let m = nm[1] var s = Set() var texts = [String]() for _ in 1...n { s.insert(readLine()!) } for _ in 1...m { tex..
난이도 실버 V 문제 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 내 답안 let n = Int(readLine()!)! let nCards = Set(readLine()!.split(separator: " ").map { Int($0)! }) let m = Int(readLine()!)! let mNumbers = readLine()!.split(separator: " ").map { Int($0)! } va..
퀵 정렬 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 퀵 정렬(Quicksort)은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 퀵 정렬은 n개의 데 ko.wikipedia.org 1. 퀵 정렬(Quick sort) 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬 비교 정렬: 원소들을 정렬할 때 원소들의 순서에만 의존하는 알고리즘. 예를 들어 Bubble sort는 비교하는 원소들이 숫자, 문자열, 심지어 복잡한 객체에 대해서도 순서가 결정되어 있다면 적용할 수 있음 아무리 빨라도 최악의 경우 n log n 시간을 필요로 함. 비교 정렬이 아닌 알고리즘들은 이런 시간 복잡도의 제약이 없지만, 대신 다른 제..
난이도 실버 II 문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 www.acmicpc.net 내 답안 let n = Int(readLine()!)! var arr = readLine()!.split(separator: " ").map { Int($0)! } var dictionary = [Int:Int]() var count = 0 for i in arr.sorted() { if dictionary[i] == ni..
난이도 실버 V 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 내 답안 struct Person { var order: Int var age: Int var name: String } var arr = [Person]() for count in 1...Int(readLine()!)! { let input = readLine()!.split(separator: " ").map { String($0) } arr.append(Person(order..
난이도 실버 V 문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 내 답안 var alphabetSet = Set() for _ in 1...Int(readLine()!)! { alphabetSet.insert(readLine()!) } let sortedSet = alphabetSet.sorted(by: { first, second in if first.count < second.count { return true } else ..
난이도 실버 V 문제 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 내 답안 var array: [(Int, Int)] = [] for _ in 1...Int(readLine()!)! { let input = readLine()!.split(separator: " ").map { Int($0)! } array.append((input[1], input[0])) } array.sort(by:
난이도 실버 V 문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 내 답안 var array: [(Int, Int)] = [] for _ in 1...Int(readLine()!)! { let input = readLine()!.split(separator: " ").map { Int($0)! } array.append((input[0], input[1])) } array.sort(by:..
난이도 실버 V 문제 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 내 답안 print(String(readLine()!.sorted(by: >))) - 처음에는 그동안 입력 받은 것을 쪼개듯이 split을 사용했는데 컴파일 에러가 났다. - 에러를 확인해보니 타입이 안맞는다 하여 split을 제외하고 readLine()!에 바로 map을 하여 sorted(by:)를 사용해서 문제를 풀 수 있었다. - 예전 프로그래머스 했을 때처럼 뭔가 이걸 더 줄여볼 수 있지 않을까 하는 생각이 들어 input이라는 프로퍼티를 사용하는 것이 ..
난이도 브론즈 I 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 내 답안 import Foundation final class FileIO { private let buffer:[UInt8] private var index: Int = 0 init(fileHandle: FileHandle = FileHandle.standardInput) { buffer = Array(try! fileHandle.readToEnd()!)+[UInt8(0)] // 인덱스 범위..