from palette import colorful_colors

[알고리즘 with Python] - 입출력, 자료구조 본문

알고리즘/알고리즘 with 파이썬

[알고리즘 with Python] - 입출력, 자료구조

colorful-palette 2023. 4. 30. 16:29

1. 입출력

한 줄에 여러개 입력 받기: map 함수와 input의 split을 이용하고, list로 map을 묶어준다.

# 예시: 1 2 4 3 5 를 list로 입력받고 정렬하고 싶을때: 
number = list(map(int, input().split()))
number.sort()

 
여러줄에 여러개 입력받기 (List Comprehension 활용): comprehension과 list로 map을 묶어준다.

# 예시: 라인을 받을 횟수 n을 입력받고 라인마다 push 1 ,.... 이런식으로 여러줄에 여러개가 있을때:
n = int(input())
command = [list(map(str, input().split())) for _ in range(n)]
for c in command:	
# c[0], c[1], 이런식으로 n번재 줄의 m번째 요소에 접근이가능하다.

 
한 줄에 입력받은 문자열 문자별로 파싱하기:

string = input()
for i in string:	# i 는 string의 문자별로 접근 가능

 

 2차원 리스트 입력받기

# 행과 열 입력받기
n, m = map(int, input().split())

# 2차원 리스트 맵 정보 입력받기
graph = []
for i in range(n):
	graph.append(list(map(int, input())))	# list는 문자열을 받으면 문자로 쪼개주는 것을 이용한다!

2차원 리스트 초기화하기

# 가로가 M이고, 세로가 N일때:
graph = [[0 for col in range(M)] for row in range(N)]

 

 

sys 라이브러리 활용하기
경우에 따라 빠른 입출력을 필요로 할땐 sys라이브러리의 stdin, stdout을 쓸 수도 있다.

import sys
# 한 줄에 한 개 입력 받고 int로 변환하기 
N = int(sys.stdin.buffer.readline().rstrip())

# int로 된 i 출력하고 한줄띄우기 
sys.stdout.write(str(i)+'\n')

sys.stdin.readline() : input()보다 속도가 빨라 사용한다.
단 readline()은 개행문자(줄바꿈문자)를 포함하고 있다. 마지막에 개행문자가 포함되어 같이 출력되는 점 유의하기.
input()과 마찬가지로 split()을 사용할 수도 있다.
rstrip(): 오른쪽 공백을 삭제
lstrip(): 왼쪽 공백을 삭제
strip(): 왼쪽, 오른쪽 공백을 삭제

# 예시: map 이용해서 int로 변환하기
import sys
i, j = map(int, sys.stdin.readline().split())

 

2. 보조 라이브러리

from collections import deque	# queue 구현시사용, append, popleft등 이용 가능

 
 

3. 자료구조

해당 조건을 만족했을때 바로 종료하는 방법: def를 이용해 함수로 만들고, return을 이용해 종료하고 넘어가도록 한다. 혹은 quit()를 이용해 바로 종료시킬 수도 있다.
 
리스트 자료구조 활용법:

# list 내부에 요소가 존재하면
if stack:

# list 내부에 요소가 존재하지 않으면
if not stack:

# pop을 통해 원하는 인덱스의 리스트 요소를 뺄 수 있다.
# 예시: 제일 마지막에 있는 요소 list에서 제외하기
pop(-1)

 

4. Dynamic programing