📜 제목으로 보기

✏마지막 댓글로

참고

  • 블로그
  • 그외 백준 공식 레퍼런스

input.txt를 이용한 local 풀이 구조

  • 폴더
    • input.txt
    • xxx.py
import sys

sys.stdin = open("./input.txt", "rt")
# jupyter notebook시 필수
input = sys.stdin.readline # 콘솔에선 미리 안해도되며, 속도향상 필요시만 해준다. / 
######################################################
N = int(input())
# print(N)
data = list(map(int, input().split()))
# print(data)

공백 기준 데이터 입력받기(map, int, input.split )

  • map객체를 이용해 str -> int 변환했지만, sequence는 아니라 인덱싱을 못한다.
    • a, b = map : 인덱싱은 못해도 할당시 나눠받을 수 있다.
    • list_ = list(map) : 할당시 나눠받기가 불가능할 정도로 많으면, list()로 sequence로 변환시켜 받아야한다.
# - 1개는 map쓰지말자~!
n = int(input().strip())



# 2개 - int 
a, b= map(int, input().split())

# for문으로 n번 2개씩
n = int(input().strip())
for _ in range(n):
    a, b= map(int, input().split())



# 3개이상의 - list
data = list(map(int, input().split()))

# for문으로 n번  3개이상시
n = int(input().strip())
for _ in range(n):
    data = list(map(int, input().split()))

시간을 더 빠르게 데이터 입력받기(sys 모듈)

  • sys.stdin.readline() 사용
  • 단, 입력 후 엔터가 사용되므로 rstrip() 를 함께 사용
import sys
str = sys.stdin.readline().rstrip()

# 1개 - int
import sys
n = sys.stdin.readline()

# 2개 int 
import sys
N, M = map(int, sys.stdin.readline().split())


# 2차원 리스트 입력 받기
# - 행의 수 N을 입력받고, 각 행의 데이터들을 한번에 받아서 split()해서 열로 들어간다.
import sys
N = sys.stdin.readline()
board = [list(map(int,sys.stdin.readline().split())) for _ in range(N)]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-11-198e9d917b91> in <module>
      9 # 2개 int
     10 import sys
---> 11 N, M = map(int, sys.stdin.readline().split())
     12 
     13 

ValueError: not enough values to unpack (expected 2, got 0)

공백기준 출력시 *(사용시언패킹)으로

result = [1, 2, 3]

# 기본적인 리스트 출력시
print(result)
# [1,2,3]

# for loop으로 원소를 하나씩 출력
for i in range(len(result)):
    print(result[i], end=' ')
# 1 2 3

# 리스트의 원소를 언패킹 시켜서 출력
print(*result)
# 1 2 3 
[1, 2, 3]
1 2 3 1 2 3

N x M 크기의 이차원 리스트 초기화 및 입력받기

시뮬레이션 문제에서 주어지는 입력 중 가장 많은 형태의 입력을 list comprehension 으로 받을 수 있다.

n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]

visited = [[False]*m for _ in range(n)]

print(visited)
print(board)
# 입력(행 열 -> 열의 갯수만큼 False==0으로 채워진 행x열의 visited 2차원 리스트)
# 5 9
# 0 0 0 0 0 0 0 0 0
# 0 0 0 1 1 0 0 0 0
# 0 0 0 1 1 0 1 1 0
# 0 0 1 1 1 1 1 1 0
# 0 0 1 1 1 1 1 0 0
[[False, False, False, False, False], [False, False, False, False, False], [False, False, False, False, False]]
[[3], [3], [3]]

재귀함수에서 콜스택 제한(재귀한도) 풀어주기

import sys; sys.setrecursionlimit(10000)