목록Swift/Swift 알고리즘 (32)
HIT해
import Foundationvar flag = [Bool](repeating: false, count: 10001)var result : [Int] = []var nums : [Int] = []func main() { let NM = readLine()!.split(separator: " ").map { Int($0)! } let (N,M) = (NM[0], NM[1]) // N 총 숫자, M depth let XYZ = readLine()!.split(separator: " ").map { Int($0)! } nums = XYZ.sorted() backtracking(N: N, M: M, depth: 0)}func backtracking(N : Int, M ..
import Foundationvar flag : [Bool] = []var result : [Int] = []func main() { let NM = readLine()!.split(separator: " ").map{ Int($0)! } let (N , M) = (NM[0], NM[1]) flag = [Bool](repeating: false, count: N+1) logic(N: N, M: M, depth: 0) }// 이 함수에서 M 카운트까지 도달하면 돌아오기func logic(N : Int, M : Int, depth : Int) { if M == depth { // 프린트 print(result.map..
1. 최대 공약수let NM = readLine()!.split(separator: " ").map{ Int($0)! } var small = min(NM[0], NM[1])var large = max(NM[0], NM[1])var j = 0while(small != 0) { j = large % small large = small small = j}large // 최대 공약수 2. 최소 공배수두 수의 곱을 최대 공약수로 나누면 된다!(large * small) / gcd(large, small) // 최대 공약수 함수 3. 소수 구하기해당 수가 소수인지 아닌지 판별하는 방법은 2부터 제곱근+1 까지의 수를 나누어서 확인var num = Int(readLine()!)!for i in ..
https://www.acmicpc.net/problem/17425 약수의 합 공식인 N/i * i 을 하면 시간 초과가 난다. 이 문제는 dp로 약수들의 합을 계산해둔 배열과누적합을 더해둔 배열을 이용해서 해결해야한다. import Foundationfunc main(){ // 약수의 합 var dp = [Int](repeating: 1, count: 1000001) // 누적합 var s = [Int](repeating: 1, count: 1000001) for i in 2...1000000 { var j = 1 while i*j
func main() { let NM = readLine()!.split(separator: " ").map{ Int($0)! } let (X,Y) = (NM[0], NM[1]) // factorial 함수를 Double로 계산하므로, 나누기 연산도 Double로 처리 후 결과를 Int로 변환 let result = factorial(num: X) / (factorial(num: Y) * factorial(num: X - Y)) print(Int(result)) // 최종 결과를 Int로 변환해 출력}func factorial(num: Int) -> Double { return num == 0 ? 1 : (1...num).map { Double($0..
1. 기본 배열 선언빈 배열 선언var emptyArray: [Int] = []타입 지정 없이 빈 배열 선언var emptyArray = [Int]() // Int 타입의 빈 배열2. 초기화된 배열 선언정적 값으로 초기화var staticArray: [Int] = [1, 2, 3, 4, 5] 타입 지정 없이 초기화var anotherStaticArray = ["Apple", "Banana", "Cherry"] // String 타입의 배열 3. 특정 크기로 초기화기본값으로 초기화var zeroArray: [Int] = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0]4. 범위 기반 초기화범위로 초기화var rangeArray: [Int] = Array(1...10) ..
https://school.programmers.co.kr/learn/courses/30/lessons/120910/solution_groups?language=swift 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr Swift 상에서 제곱을 활용하는 방식이다. 비트 연산자를 사용pow를 사용비트연산자를 사용하는 방법은1 pow를 사용하는 방법Double로 반환하기에 Int로 변환해야한다.Int(pow(Float(2), Float(t))) pow의 인자값으로는 Float이나 Double이 들어올 수 있다.
https://www.acmicpc.net/problem/2468 접근방식BFS로 해결했고 비의 높이를 0 부터 최대 높이 이전까지 반복문을 돌려 각 상황별 영역을 비교해서 답을 구했다. import Foundationfunc main() { // 배열 크기 let size = Int(readLine()!)! var arr : [[Int]] = [] var maxHeight = 0 var safeArea = 0 let dx = [0,0,-1,1] let dy = [1,-1,0,0] for i in 0.. rain && visited[i][j] == false{ findSafeArea(..