본문 바로가기

알고리즘85

[Swift] 백준 10814번 나이순 정렬 링크: https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 1. 튜플로 풀기 - 평균 250ms 시간 소요 import Foundation let N = Int(readLine()!)! var people = [(index: Int, age: Int, name: String)]() for i in 0.. 2022. 3. 21.
[Swift] 백준 14888번 연산자 끼워넣기 링크: https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net +, -, *, / 연산자가 남아있으면 재귀함수를 돌며 연산자를 끼워넣습니다. import Foundation let N = Int(readLine()!)! let numbers = readLine()!.split(separator: " ").map { Int(String($0))! } let operators = readLine()!.. 2022. 3. 19.
[Swift] 백준 2609번 최대공약수와 최소공배수 링크: https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net import Foundation let arr = readLine()!.split(separator: " ").map { Int(String($0))! } let N = arr[0] let M = arr[1] // 최대공약수 func GCD(_ a: Int, _ b: Int) -> Int { let mod: Int = a % b return 0 == mod ? min(a, b) : GCD(b, mod) } // 최소공배수 func LCM(_ a: Int, .. 2022. 3. 18.
[Swift] 백준 2581번 소수 링크: https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net [Swift] 소수 판별 알고리즘에서 에라토스테네스의 체를 사용하였습니다. import Foundation let M = Int(readLine()!)! // 최소 let N = Int(readLine()!)! // 최대 var array = Array(repeating: true, count: N + 1) if Int(sqrt(Double(N))) > 1 { for i in 2...Int(sqrt(.. 2022. 3. 18.
[Swift] 백준 10818번 최소, 최대 링크: https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net let N = Int(readLine()!)! let array = readLine()!.split(separator: " ").map { Int(String($0))! } var m = Int.max var M = Int.min for i in array { m = min(m, i) M = max(M, i) } print(m, M) 2022. 3. 18.
[Swift] 백준 1292번 쉽게 푸는 문제 링크: https://www.acmicpc.net/problem/1292 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net cur(현재 숫자) count(현재 숫자의 개수) 현재 숫자와 현재 숫자의 개수가 똑같아질 때까지 수열에 넣고, 만약 똑같다면 현재 숫자를 +1 해줍니다. 수열을 만들면 A부터 B까지 reduce함수로 더해서 출력합니다. import Foundation let arr = readLine()!.split(separator: " ").map { Int(String($0))! } let A = arr[0] - 1 le.. 2022. 3. 18.