RUBY

[백준] 빠른 A+B 본문

PS/BOJ

[백준] 빠른 A+B

RUBY_루비 2024. 2. 17. 23:00

출처:: https://www.acmicpc.net/problem/15552

분류::배열

 

1. 문제 이해 및 해결과정

- 시간복잡도 확인 필요

 

 

2. 풀이방법

import sys

input = sys.stdin.readline
n = int(input())

for _ in range(n):
    a,b = map(int, input().split())
    print(a+b)

 

3. 오답원인

 

4. 알게된 점

C
scanf/printf는 충분히 빠릅니다.
C++
  • 아래 얘기는 cin, cout을 쓸 때의 얘기지, scanf/prinf로 입출력을 하고자 하신다면 그냥 쓰시면 됩니다. scanf/printf는 충분히 빠릅니다.
  • endl은 개행문자를 출력할 뿐만 아니라 출력 버퍼를 비우는 역할까지 합니다. 그래서 출력한 뒤 화면에 바로 보이게 할 수 있는데, 그 버퍼를 비우는 작업이 매우 느립니다. 게다가 온라인 저지에서는 화면에 바로 보여지는 것은 중요하지 않고 무엇이 출력되는가가 중요하기 때문에 버퍼를 그렇게 자주 비울 필요가 없습니다. 그래서 endl을 '\n'으로 바꾸는 것만으로도 굉장한 시간 향상이 나타납니다.
  • cin.tie(NULL)은 cin과 cout의 묶음을 풀어 줍니다. 기본적으로 cin으로 읽을 때 먼저 출력 버퍼를 비우는데, 마찬가지로 온라인 저지에서는 화면에 바로 보여지는 것이 중요하지 않습니다. 입력과 출력을 여러 번 번갈아서 반복해야 하는 경우 필수적입니다.
  • ios_base::sync_with_stdio(false)는 C와 C++의 버퍼를 분리합니다. 이것을 사용하면 cin/cout이 더 이상 stdin/stdout과 맞춰 줄 필요가 없으므로 속도가 빨라집니다. 단, 버퍼가 분리되었으므로 cin과 scanf, gets, getchar 등을 같이 사용하면 안 되고, cout과 printf, puts, putchar 등을 같이 사용하면 안 됩니다.
Java
BufferedWriter 외에도, StringBuilder로 출력을 모아 놓았다가 그 String을 System.out.println하는 방법도 있습니다.
Python
rstrip을 하라는 건 문자열 자체를 변수에 저장하고 싶을 때 얘기지, 개행문자가 맨 끝에 들어와도 int 변환이나 split()을 그대로 할 수 있습니다. 즉 int(sys.stdin.readline()), sys.stdin.readline().split() 이렇게 해도 아무 문제 없습니다. 참고로 이름이 꽤 길기 때문에 저는 input = sys.stdin.readline을 맨 처음에 함으로써 쓰는 편입니다.
Kotlin
Java처럼 BufferedReader와 BufferedWriter를 쓰면 됩니다.
Ruby
gets와 puts는 충분히 빠릅니다.
Go
bufio를 import하면 버퍼를 사용한 빠른 입출력이 가능합니다.

C#
StreamReader로 읽고, StringBuilder로 출력을 모아 놓았다가 그 String을 Console.WriteLine하는 방법이 있습니다. BufferedStream과 StringWriter로 조금 더 향상시킬 수 있는 것 같으나 자세한 것은 다른 분의 답변을 기다리겠습니다.
VB
StringBuilder로 출력을 모아 놓았다가 그 String을 Console.WriteLine하는 방법이 있습니다.
Rust
아래 "rust05013"으로 올린 댓글을 참조해 주시기 바랍니다.
Swift
fread로 여러 바이트를 한번에 읽고, 정수를 읽어야 할 때마다 미리 읽어둔 문자열로부터 정수를 파싱하면 됩니다. 꽤 복잡한 방법이지만, 이것보다 간단한 방법은 아직 찾지 못했습니다.
Text
입출력 파일이 예제 포함 2개 이상이기 때문에 Text로는 이 문제를 풀 수 없습니다.

아희
안타깝게도 아희로는 이 문제를 풀 수 없습니다. 입출력하는 방법이 하나뿐인데 시간초과가 납니다.

출처 : https://www.acmicpc.net/board/view/22716

 

'PS > BOJ' 카테고리의 다른 글

[백준] 성 지키기  (0) 2024.02.17
[백준]수 정렬하기 3  (0) 2024.02.17
[백준] 소금 폭탄  (0) 2024.02.17
[백준]두 수의 합  (0) 2024.02.17
[백준]문서 검색  (0) 2024.02.14
Comments