[Swift] Swift 문법 수납장🗄

Yujin·2021년 11월 3일
0

Swift

목록 보기
5/6
post-thumbnail
var answer = [Int]()
answer = answer.sorted()

... 범위연산자 공부

s.lowercased()

s.sort(by: {$0.asciiValue! > $1.asciiValue!})

var s = Array(s)
    var answer = false
    if(s.count==4 || s.count==6){
        for c in s{
        if  !(c.asciiValue! >= 48 && c.asciiValue! <= 57){
            return false
        }
    }
        return true
    }

var A = Character("A").asciiValue!
s = String(UnicodeScalar(A+(x+n-Z-1)))

Int(sqrt(Double(n))+1)

answer += n%i == 0 ? i : 0

var c = count%2 == 0 ? c.uppercased() : c.lowercased()

//서로다른 숫자 세개 조합 완전 탐색
https://school.programmers.co.kr/learn/courses/30/lessons/12977
func solution(_ nums:[Int]) -> Int {
for i in 0..<nums.count-2{
        for j in i+1..<nums.count-1{
            for k in j+1..<nums.count{
                sum = nums[i]+nums[j]+nums[k]
                if (isPrime(sum)){
                    numPrimeNumber += 1
                }
            }
        }
    }

binary = binary.reversed()

now = Int(pow(Double(num)!,2.0))

subArray.sort()

var maxNumber = max(scoreOne, scoreTwo, scoreThree)

var uncomplete = Array(repeating: 0, count: N)

var arrFailRate = [(rate:Double,stage:Int)]()
arrFailRate.sort(by:{ ($0.rate > $1.rate) || ($0.stage < $1.stage) })

if(abs(target - nowPos) == 1 || abs(target - nowPos) == 3){
        return 1
    }

var answer = [Int]()
if(!answer.contains(sum)){
                 answer.append(sum)
            }

var arrays = board
    var max = 0
    if board.count == 1 {
        return board[0].contains(1) ? 1 : 0
    }
    if  board[0].count == 1 {
        return board.flatMap {$0}.contains(1) ? 1 : 0
    }

let min = [arrays[row-1][column-1], arrays[row-1][column], arrays[row][column-1]].min()

var stack = Array<String>()
    for c in s{
        if (c=="("){
            stack.append("(")
        }else{//)
            var left = stack.popLast()
            if(left != "("){
                return false
            }
        }
    }

var count = String(n,radix:2).filter({ $0 == "1" }).count

var string = s.split(separator: " ").map { Int(String($0))! }

extension String{
    subscript(_ index: Int) -> Character {
        return self[self.index(self.startIndex, offsetBy: index)]
    }
}

var a = A.sorted(by:>)
    var b = B.sorted(by:<)

dp[i]=(dp[i-1]%1234567+dp[i-2]%1234567)%1234567

db[1].filter { $0 <= k }.count

var wordSet = Set<String>()
wordSet.insert(words[0])

!c.isNumber (Character)

var fileTuples = [(head: String, number: String, tail: String)]()
let sortedFileTuples=fileTuples.sorted{($0.head.lowercased(),Int($0.number)!)<($1.head.lowercased(),Int($1.number)!)}
//https://github.com/yujinnee/algorithm-gym/blob/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/lv2/17686.%E2%80%85%EF%BC%BB3%EC%B0%A8%EF%BC%BD%E2%80%85%ED%8C%8C%EC%9D%BC%EB%AA%85%E2%80%85%EC%A0%95%EB%A0%AC/%EF%BC%BB3%EC%B0%A8%EF%BC%BD%E2%80%85%ED%8C%8C%EC%9D%BC%EB%AA%85%E2%80%85%EC%A0%95%EB%A0%AC.swift

var decimal = 0
var num = String(decimal,radix:n).uppercased()

var myDictionary = Dictionary<String, Int>()
for (key,value) in myDictionary{
        answer *= value+1
    }

var categories = Set<String>()
categories.contains(cloth[1])

var dic = [Int : Int]()

for i in stride(from:n,to:0,by:-1){
   
    }

s=s.replacingOccurrences(of:"0",with:"")

s = String(s.count,radix:2)

for i in stride(from: x2, to: x1, by: -1){
       //https://github.com/yujinnee/algorithm-gym/blob/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/lv2/77485.%E2%80%85%ED%96%89%EB%A0%AC%E2%80%85%ED%85%8C%EB%91%90%EB%A6%AC%E2%80%85%ED%9A%8C%EC%A0%84%ED%95%98%EA%B8%B0/%ED%96%89%EB%A0%AC%E2%80%85%ED%85%8C%EB%91%90%EB%A6%AC%E2%80%85%ED%9A%8C%EC%A0%84%ED%95%98%EA%B8%B0.swift
    }

if visit[i] == false && zip(start,words[i]).filter{$0 != $1}.count == 1

Int.max

for next in graph[now] where distance[next] < 1{
}

for (bIndex, banned) in banned_id.enumerated() {
}

enroll.map{profitDic[$0]!}

indegree.enumerated().forEach {
            if $0.element == 0 {
                queue.append($0.offset)
            }
        }

print(result.reduce(into: "", { $0 += "\($1) "}).dropLast())

print(height, terminator: " ")

var (nx,ny,nz) = (x+dx[i],y+dy[i],z+dz[i])

substring == s.subString(from: j, to: j+i-1)
extension String {

    func subString(from: Int, to: Int) -> String {

        let startIndex = self.index(self.startIndex, offsetBy: from)

        let endIndex = self.index(self.startIndex, offsetBy: to)

        return String(self[startIndex...endIndex])

    }

}

var s = Array(s)
s.remove(at: i+1)

정렬

https://github.com/yujinnee/algorithm-gym/blob/main/프로그래머스/lv1/12915. 문자열 내 마음대로 정렬하기/문자열 내 마음대로 정렬하기.swift

var index = strings[0].index(strings[0].startIndex, offsetBy: n)
    
    let result = strings.sorted(by: {(s1:String, s2:String) -> Bool in
        if s1[index] == s2[index]{
            return s1 < s2
        }else{
            return s1[index] < s2[index]
        }
    })
    
    return result

최소공배수

https://github.com/yujinnee/algorithm-gym/blob/main/프로그래머스/lv2/12953. N개의 최소공배수/N개의 최소공배수.swift

func solution(_ arr:[Int]) -> Int {
    return arr.reduce(1) { lcm(a: $0, b: $1)}
}

func gcd(a: Int, b: Int) -> Int {
    let r = a%b 
    if r != 0 {
        return gcd(a: b, b: r) 
    } else {
        return b
    }
}

func lcm(a: Int, b: Int) -> Int {
    return a * b / gcd(a: a, b: b) 
}

딕셔너리

https://github.com/yujinnee/algorithm-gym/blob/main/프로그래머스/lv2/64065. 튜플/튜플.swift

import Foundation

func solution(_ s:String) -> [Int] {
var result = [Int]()
    var dic = [Int : Int]()
 let arr = s.components(separatedBy: ["{", "}", ","]).filter { !$0.isEmpty }.map { Int($0)! }
    
arr.forEach {
        dic.updateValue((dic[$0] ?? 0) + 1, forKey: $0)
    }
    
    
    dic.values.sorted(by: >).forEach {
        result.append(dic.someKey(forValue: $0)!)
    }
    
    return result

}

extension Dictionary where Value: Equatable {
    func someKey(forValue val: Value) -> Key? {
        return first(where: { $1 == val })?.key
    }
}
Footer

유니온 파인드

https://github.com/yujinnee/algorithm-gym/blob/main/백준/Silver/9372. 상근이의 여행/상근이의 여행.swift

var input = Int(String(readLine()!))!
var t = input

var parent = [Int]()

for _ in 0..<t{
    var inputs = readLine()!.split(separator: " ").compactMap{Int(String($0))!}
    var n = inputs[0]
    var m = inputs[1]
    parent = [Int]()
    
    for i in 0...n{
        parent.append(i)
    }
    
    var count = 0
    
    for i in 0..<m{
        inputs = readLine()!.split(separator: " ").compactMap{Int(String($0))!}
        var x = inputs[0]
        var y = inputs[1]
        if(isUnion(x,y)){
            continue
        }else{
            union(x,y)
            count += 1
        }

    }
    print(count)
}

func find(_ x: Int)->Int{
    if(x==parent[x]){
        return x
    }
    parent[x] = find(parent[x])
    return parent[x]
}

func union(_ x: Int,_ y: Int){
    var x = find(x)
    var y = find(y);
    if (x == y) {return}
    if (x < y) {
        parent[y] = x
    }else{
        parent[x] = y
        
    }
}
func isUnion(_ x: Int,_ y: Int)->Bool{
    var x = find(x)
    var y = find(y)
    return x == y
}

for 문

for x in 0...10{ 
   print(x)
    }
// 0 1 2 3 4 5 6 7 8 9 10
    
for x in 0..<10{ 
   print(x)
    }
//0 1 2 3 4 5 6 7 8 9

for-in 문


let nums: [Int] = [1, 2, 3, 4]
 
for num in nums {
    print(num)        // 1 2 3 4
}

switch 문

let num = 7

switch num {
case 0:
	print("0 입니다.")
case 5:
	print("5 입니다.")
case 6...10:
	print("6 ~ 10 입니다.")
default:
	print("나머지 입니다.")
}

스위프트는 default문을 꼭 써줘야 한다.

Dictionary

var dic: [Int : String] = [:]

var dic = [Int : String]()

var dic: Dictionary = [Int:String]()

var dic: Dictionary<Int, String> = Dictionary<Int, String>

dic = ["zero":"0","one":"1","two":"2"]

String 타입과 Int 타입 서로 변환하는 방법

Int(String)

: String → Int 로 변경

var s = "12345" //"12345"
var num = Int(s) // 12345 

String(Int)

: Int → String으로 변경

var num = 12345 //12345
var s = String(num) // "12345" 

Int → String으로 바꿔줄 때는 크게 문제가 안 생기는데

String → Int 로 바꿔줄 때는 공백이나 문자가 포함되어있을 경우 오류가 발생하므로 주의!!!

profile
하나하나 알아가는 하루하루

0개의 댓글

관련 채용 정보