Today 12/18
let intNum = Int(readLine()!)!
let intArr = readLine()!.split(separator: " ").map{Int(String($0))!}
var minimum = intArr[0]
var maximum = intArr[0]
for index in 1...intNum {
if intArr[index-1] < minimum {
minimum = intArr[index-1]
}
if intArr[index-1] > maximum {
maximum = intArr[index-1]
}
}
print(minimum, maximum, separator: " ")
let intNum = Int(readLine()!)!
let intArr = readLine()!.split(separator: " ").map{Int(String($0))!}
print(intArr.min(), intArr.max(), separator: " ")
간결하게 표현 가능하다.
let numArr = readLine()!.split(separator: " ").map{Int(String($0))!}
let sum = numArr[0] + numArr[1]
let min = numArr[0] - numArr[1]
let dup = numArr[0] * numArr[1]
let div = numArr[0] / numArr[1]
let rem = numArr[0] % numArr[1]
print(sum, min, dup, div, rem, separator: "\n")
let pivot = readLine()!.split(separator: " ").map{Int(String($0))!}
let numArr = readLine()!.split(separator: " ").map{Int(String($0))!}.filter{$0 < pivot[1]}
print(numArr.map{String($0)}.joined(separator: " "))
let pivot = readLine()!.split(separator: " ").map{Int(String($0))!}
print(readLine()!.split(separator: " ").map{Int(String($0))!}.filter{$0 < pivot[1]}.map{String($0)}.joined(separator: " "))
극단적으로 줄이면 이렇게 된다.
let num = Int(readLine()!)!
for _ in 1...num {
let numArr = readLine()!.split(separator: " ").map{Int(String($0))!}
let sum = numArr[0] + numArr[1]
print(sum)
}
let num = Int(readLine()!)!
for index in 1...num {
print(readLine()!.split(separator: " ").map{Int(String($0))!}.reduce(0){$0 + $1})
}
극단적으로 줄이면 이렇게 된다.
reduce는 괄호 안에 처음 값이 있어야 한다. reduce(0)
while let input = readLine() {
print(input.split(separator: " ").map{Int(String($0))!}.reduce(0){$0 + $1})
}
while let input = readLine()
을 생각하는게 어려웠다.
while true {
let input = readLine()!
if input == "" { break }
print(input.split(separator: " ").map{Int(String($0))!}.reduce(0){$0 + $1})
}
이건 시행착오였는데, 옵셔널 체이닝을 해줘서 아무 것도 들어오지 않았을 때에는 런타임 에러가 발생했다.
while true {
guard let input = readLine() else { break }
print(input.split(separator: " ").map{Int(String($0))!}.reduce(0){$0 + $1})
}
이를 해결하기 위해 guard let을 사용해서 이런 식으로 해결할 수 있었다.
while true {
let input = readLine()!
if input = "0 0" { break }
print(input.split(separator: " ").map{Int(String($0))!}.reduce(0){$0 + $1})
}
위의 문제와 같은 방법대로
위 문제와 다른 점은 아무것도 들어오지 않는 대신 0 0
이 들어오니 그냥 옵셔널 체이닝을 사용해주면 된다.
print(readLine()!.split(separator: " ").map{Int(String($0))!}.reduce(1){$0*$1})
print(Character(readLine()!).asciiValue!)
Character 타입으로 변경해주고 asciiValue 함수를 사용하여 값을 구한다.
asciiValue는 옵셔널 타입이므로 옵셔널 체이닝을 사용한다.
let _ = Int(readLine()!)!
print(readLine()!.map{Int(String($0))!}.reduce(0,+))
Swift3 ) How to convert string to an array in Swift ( 문자열을 배열로 바꾸는 방법)
String을 Character로 바꾸는 방법을 고민하다가 구글링을 해봤다. 원래는 Characters를 쓰면 가능했지만, 9.2부터 없어지고, 대신 그냥 map{String($0)}
을 하거나 Array($0)
만 해줘도 자동으로 Character로 변환된다고 한다.
또, reduce(0){$0+$1}
를 더 간결하게 그냥 reduce(0,+)
로 사용할 수도 있다는 것을 알았다.