[Swift 코테] 백준 15552 빠른 A+B
2022. 2. 11. 14:48ㆍSwift 코딩테스트/Swift 백준 문제 풀이
728x90
다른 언어의 경우에는 이글에 설명되어 있다 ->
import Foundation
final class FileIO {
private let buffer:[UInt8]
private var index: Int = 0
init(fileHandle: FileHandle = FileHandle.standardInput) {
buffer = Array(try! fileHandle.readToEnd()!)+[UInt8(0)] // 인덱스 범위 넘어가는 것 방지
}
@inline(__always) private func read() -> UInt8 {
defer { index += 1 }
return buffer[index]
}
@inline(__always) func readInt() -> Int {
var sum = 0
var now = read()
var isPositive = true
while now == 10
|| now == 32 { now = read() } // 공백과 줄바꿈 무시
if now == 45 { isPositive.toggle(); now = read() } // 음수 처리
while now >= 48, now <= 57 {
sum = sum * 10 + Int(now-48)
now = read()
}
return sum * (isPositive ? 1:-1)
}
@inline(__always) func readString() -> String {
var now = read()
while now == 10 || now == 32 { now = read() } // 공백과 줄바꿈 무시
let beginIndex = index-1
while now != 10,
now != 32,
now != 0 { now = read() }
return String(bytes: Array(buffer[beginIndex..<(index-1)]), encoding: .ascii)!
}
@inline(__always) func readByteSequenceWithoutSpaceAndLineFeed() -> [UInt8] {
var now = read()
while now == 10 || now == 32 { now = read() } // 공백과 줄바꿈 무시
let beginIndex = index-1
while now != 10,
now != 32,
now != 0 { now = read() }
return Array(buffer[beginIndex..<(index-1)])
}
}
let fIO = FileIO()
let n = fIO.readInt()
for _ in 0..<n{
var a = fIO.readInt() + fIO.readInt()
print(a)
}
readLine()을 대신한 파일 입출력 FileIO.read()를 사용한다.
Xcode에서 print()를 확인하고자 할 때 입력하고 엔터를 친 후 Ctrl + D 키를 입력하면 결과를 보여준다.
728x90
'Swift 코딩테스트 > Swift 백준 문제 풀이' 카테고리의 다른 글
[Swift 코테] 백준 10818 최소, 최대 (0) | 2022.03.08 |
---|---|
[Swift 코테] 백준 10951 A + B - 4 (0) | 2022.03.07 |
[Swift 코테] 백준 2741 N 찍기 (0) | 2022.02.11 |
[Swift 코테] 백준 10717 고양이 (0) | 2022.02.10 |
2292벌집 (0) | 2020.10.09 |