새소식

Algorithm

빠른 입출력

  • -

입력

C/C++

#include <stdio.h>

int N;

scanf("%d", &N);

int A[1003];

for (int i = 0; i < N; i ++) {

    scanf("%d", A+i);

}

Java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

// 한 줄에 정수 하나가 주어지는 경우
int N = Integer.parseInt(br.readLine());

// 한 줄에 정수 N개가 공백으로 분리되어 주어지는 경우
int[] A = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine()); 
for (int i = 0; i < N; i ++) {
    A[i] = Integer.parseInt(st.nextToken());
}
br.close();

Swift

출처: https://gist.github.com/JCSooHwanCho/30be4b669321e7a135b84a1e9b075f88

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()
let s = fio.readString()

출력

C/C++

#include <stdio.h>

int N = 1000;
int A[1000];

for (int i = 0; i < N; i ++) {
    A[i] = i * i;
    printf("%d\n", A[i]);
}

Java

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

int N = 1000;
int[] A = new int[N];
for (int i = 0; i < N; i ++) {
    A[i] = i * i;
    bw.write(String.valueOf(A[i]]) + "\n");
}
bw.write("String\n");

bw.flush(); // 이 부분이 없으면 출력이 되지 않을 수도 있음
bw.close();

 

반응형

'Algorithm' 카테고리의 다른 글

다익스트라  (0) 2019.06.20
최소 스패닝 트리  (0) 2019.06.20
인덱스 트리  (0) 2019.06.20
스택, 큐, 데큐, 힙  (0) 2019.06.20
복잡도 계산  (0) 2019.06.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.