백준 파이썬 코딩테스트 (빠른 A+B)

2025. 2. 25. 22:49·코딩테스트/BaekJoon

백준 15552번 문제

빠른 A+B


문제

 

 


결과

문제에 이상한 이야기가 있길래 읽어보니, input()의 속도에 관한 내용이었다.

그래서 이 문제는 많은 테스트양으로 input()을 사용했을때, 타임아웃이 되게 설정한 문제인것으로 파악을 했다.

 

하지만 input()을 사용하게 되면 어떻게 되는지 한번 테스트를 해보니, 말 그대로 타임아웃으로 체점이 되게된다.

 

input()은 반복문에서 입력이 많아지면 속도가 느려지기 때문에, 다른 방식을 사용한다.

 

sys.stdin.readline() 이 빠른 이유는 비교를 해봐야 한다.

 

 

  • input()
    • sys.stdin.readline()을 래핑 한 함수로, 입력을 읽고, 검사하고, 예외처리 후 " \n " 을 제거 후 데이터를 문자열로 반환한다.
  • sys.stdin.readline()
    • 바로 입력된 데이터를 처리하지 않고 바로 읽어온다. 
    • 래핑처리가 안되어 있기 때문에 빠른 속도로 처리가 가능하지만 " \n "이 포함되어 있기 떄문에 strip()을 사용해서 지워야 한다.

 

 

이러한 차이로 인하여 속도의 차이를 보는 것이다.

 

 

sys.stdin.readline()을 사용해서 문제를 풀어보자. 

import sys

a = int(sys.stdin.readline())


for i in range(a):
    b, c = map(int, sys.stdin.readline().strip().split())
    print(b+C)

 

결과는 32412kb의 메모리를 사용해서 1284 ms의 속도로 답변을 주었다.

 

 

이때 재미난 글을 보게 된다.

 

입력값과 마찬가지로, 출력값 또한 많다면 출력값의 속도를 줄일 수 있는 방법도 있다! 라는 것이다.

 

 

이는 래핑처리라기보다 메모리에 저장해서 한번에 출력하기 때문에 속도는 빠르지만, 메모리는 더 사용하는 방식이었다.

 

 

sys.stdout.write()를 사용해서 문제를 풀어보자.

 

 

import sys

a = int(sys.stdin.readline())
result = []

for i in range(a):
    b, c = map(int, sys.stdin.readline().strip().split())
    result.append(str(b + c))

sys.stdout.write("\n".join(result) + "\n")

 

이렇게 문제를 풀게되면 메모리는 97572kb를 사용하지만 속도는 1064ms로 줄어 든 것을 볼 수 있었다.

 

 

이때 왜 write에 " \n " (개행문자) 를 삽입해야하냐면, realine과 마찬가지로 개행문자까지 읽어오니, 출력시에도 개행문자를 넣어야 제대로 출력이 되게 된다. 

결과값이 한줄띄움으로 하나씩 하니 마지막에도 개행문자를 추가해주는 것이 맞을거 같다.

 

 

Coding_Test/백준/Bronze/15552. 빠른 A+B at main · K-MarkLee/Coding_Test

 

Coding_Test/백준/Bronze/15552. 빠른 A+B at main · K-MarkLee/Coding_Test

This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test

github.com

 

저작자표시 비영리 변경금지

'코딩테스트 > BaekJoon' 카테고리의 다른 글

백준 파이썬 코딩테스트 (A+B -8)  (0) 2025.02.27
백준 파이썬 코딩테스트 (A+B -7)  (0) 2025.02.26
백준 파이썬 코딩테스트 (코딩은 체육과목 입니다)  (0) 2025.02.24
백준 파이썬 코딩테스트 (영수증)  (0) 2025.02.24
백준 파이썬 코딩테스트 (합)  (0) 2025.02.24
'코딩테스트/BaekJoon' 카테고리의 다른 글
  • 백준 파이썬 코딩테스트 (A+B -8)
  • 백준 파이썬 코딩테스트 (A+B -7)
  • 백준 파이썬 코딩테스트 (코딩은 체육과목 입니다)
  • 백준 파이썬 코딩테스트 (영수증)
코드 유랑자 승열
코드 유랑자 승열
코드 유랑자 승열의 프로그래밍 일지를 남기는 공간입니다.
  • 코드 유랑자 승열
    승열의 프로그래밍 시네마
    코드 유랑자 승열
  • 전체
    오늘
    어제
  • 링크

    • 깃허브 보러가기
    • 링크드인 보러가기
    • 인스타그램 보러가기
    • 카테고리
      • 코딩테스트
        • BaekJoon
      • TIL and WIL
        • TIL
        • WIL
      • 주말스터디
      • 내일배움캠프
        • 사전캠프 강의 (SQL)
      • 용어정리
        • Python
        • Python-Library
        • Machine-Learning
        • Deep-Learning
        • AI 활용
        • LLM & RAG
        • Docker
        • Django
        • SQL
        • Java Script
        • etc
      • Daily 코드카타
        • SQL
        • Python 알고리즘
      • 임시저장
      • 보류
  • 태그

    django
    vector db
    오블완
    langchain
    template
    티스토리챌린지
    View
    word2vec
    llm
    RAG
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코드 유랑자 승열
백준 파이썬 코딩테스트 (빠른 A+B)
상단으로

티스토리툴바