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)
정렬
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 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
let nums: [Int] = [1, 2, 3, 4]
for num in nums {
print(num) // 1 2 3 4
}
let num = 7
switch num {
case 0:
print("0 입니다.")
case 5:
print("5 입니다.")
case 6...10:
print("6 ~ 10 입니다.")
default:
print("나머지 입니다.")
}
스위프트는 default문을 꼭 써줘야 한다.
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 로 변경
var s = "12345" //"12345"
var num = Int(s) // 12345
: Int → String으로 변경
var num = 12345 //12345
var s = String(num) // "12345"
Int → String으로 바꿔줄 때는 크게 문제가 안 생기는데
String → Int 로 바꿔줄 때는 공백이나 문자가 포함되어있을 경우 오류가 발생하므로 주의!!!