Python/알고리즘

[Python] 파이썬으로 입력, 출력, 데이터 세팅하기

댕주 2025. 4. 6. 00:51

알고리즘 문제 사이트마다 입력과 출력 방식이 조금씩 다른데,

프로그래머스는 로직만 작성하고 백준에서는 문제에 나와있는대로 입력과 출력까지 작성해야 한다.

다양한 문제 풀이 환경에 대비해서 입력과 출력 방법을 알아두면 좋을 것 같다


1. 입력 받기

입력 값이 큰 경우를 대비해서

input() 대신 sys.stdin.readline() 을 사용하는 것이 유리하다

📌 기본 입력 처리

import sys
input_func = sys.stdin.readline

n = int(input_func())	# 정수 하나 입력 받기
arr = list(map(int, input_func().split()))	# 한 줄에 여러 정수 입력 받기

 

sys.stdin.readline()개행 문자 (\n)도 같이 입력받기 때문에,

strip()을 사용하여 공백을 제거해주는 것이 좋다

s = input_func().strip() # 문자열 입력받기

📌 여러 줄 입력 받기

import sys
input_func = sys.stdin.readline

n = int(input_func()) # 첫 줄에 입력될 정수 개수
arr = [int(input_func().strip()) for _ in range(n)] # n개의 정수를 줄마다 입력받아 리스트로 저장

2. 출력 하기

출력할 데이터가 많을 경우, print() 대신 sys.stdout.write() 를 사용하여 속도를 높일 수 있다

📌 기본 출력 처리

import sys
sys.stdout.write("Hello\n")

📌 여러 줄 한번에 출력 하기

import sys
result = ["Hello", "World"]
sys.stdout.write("\n".join(result) + "\n")

3. 데이터 세팅하기

📌 리스트로 입력받기

arr = list(map(int, input_func().split()))  # 한 줄에 공백으로 구분된 정수 입력받기

📌 딕셔너리로 입력받기

n = int(input_func())
data = {}
for _ in range(n):
    key, value = input_func().split()
    data[key] = int(value)
print(data)

📌 집합(Set)으로 입력받기

n = int(input_func())
unique_numbers = set(map(int, input_func().split()))
print(unique_numbers)

📌 튜플 리스트로 입력받기

n = int(input_func())
coordinates = [tuple(map(int, input_func().split())) for _ in range(n)]
print(coordinates)

4. 왜 더 빠를까?

  • input()은 내부적으로 **sys.stdin.readline()**을 호출하지만,
    추가로 문자열 처리가 포함되어 있어 상대적으로 느리다.
  • print()는 자동으로 줄 바꿈출력 버퍼 플러시를 수행하여 느리다.
  • sys.stdout.write()는 줄 바꿈을 직접 추가해야 하지만, 버퍼에 한 번에 쓰기 때문에 빠르다.