오류 및 알고리즘정리본

백준 알고리즘 시간초과 방지하는 법

츄98 2023. 5. 4. 23:45

<python>

1. input 대신 sys.stdin.readline 사용하기

import sys
input = sys.stdin.readline

이렇게 하면 그냥 input을 쓸 때보다 빠르게 입출력을 받을 수 있다.

단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.

 

 사용예시)

import sys
input = sys.stdin.readline

n = map(int, input().rstrip())
n, m = map(int, input().split())

 

 

2. Pypy로 제출하기

Pypy3은 Python 3와 같은 문법을 가지면서 일반적으로 더 빠르게 동작한다.

연산량이 많은 문제에서 Python을 사용하고자 한다면 Pypy로 제출하는 것을 권장한다.

 

 

그 외 C++ 과 Java의 경우)

  • C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.
  • Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.