Algorithm/기본 지식

Python 입출력 정리

Albosa2lol 2024. 7. 17. 19:06

input()

한 줄의 문자열을 입력받을 때

str = input() # 문자열
num = int(input()) # 정수형

a, b = input().split() # 띄어쓰기로 구분되는 값

map()

여러개의 값을 일차원 배열로 입력받을 때

리스트의 모든 원소에 각각 특정한 함수를 적용할 때

  • javascript map이랑 비슷하지만 python의 map은 map 객체라는 Iterable한 객체를 반환하고, 이를 list, tuple로 변환하여 사용해야 한다
    • 그래서 밑에 예제에서도 list로 변환해주고 있다
arr = list(map(int, input().split())) # 띄어쓰기로 구분하는 정수형

sys.stdin

파일 입출력 시

sys.stdin = open("input.txt", "r")
  • stdin : standart input의 약자. stdout(standard out), stderr(standard error)도 있음

for

여러값을 배열로 입력받는 경우

여러개의 값을 일차원 배열로 입력받을 때

arr = []
for i in range(n):
	arr.append(int(input())) # 띄어쓰기로 구분하는 정수형인데 n값도 함께 입력받는 경우

arr = [int(input()) for _ in range(n)] # 엔터로 구분하는 정수형. n이 엔터 횟수

arr = [input() for _ in range(i)] # 엔터로 구분하는 문자열. 배열 속 문자열 하나하나가 값으로 입력됨

여러개의 값을 이차원 배열로 입력 받을 때 (이차원 배열 === 테이블

arr[first][second] # first second 사이는 엔터로 구분됨

arr = [list(map(int, input()) for _ in range(n)]
# 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제1 참고

arr = [list(map(int, input().split())) for _ in range(n)]
# 띄어쓰기로 구분하는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제 2 참고

(예제1) 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

(예제2) 띄어쓰기 구분이 있는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input().split())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

정수 → 배열로

num = 12345
arr = list(map(int, str(num))

빠른 입력

import sys
n = int(sys.stdin.readline())

print(n)
  • sys : 시스템 관련 작업을 수행할 수 있는 다양한 함수와 변수 제공
  • sys.stdin()
    • 표준 입력 스트림
  • .readline()
    • 입력된 한 줄을 문자열로 읽음
  • 위 예제 코드를 실행시키고 123을 입력했더니 123이 출력됐다

🤨 흠.. 그럼 input하고는 뭐가 다르지..?

sys.stdin.readlin() 이 input() 함수보다 더 빠르게 입력을 읽을 수 있다고 한다. 그래서 큰 입력을 효율적으로 처리할 때 사용된다고. 123 같은거 말고

😏 이차원 배열을 sys를 사용해서 받아보고 싶어졌다

import sys
input = sys.stdin.read # 우선 입력을 한번에 읽어온다
data = input().strip().split("\\n") # 입력을 줄 단위로 나누어 리스트로 변환한다
# strip() = trim()

n = int(data[0].strip())
# 첫번째 줄(0번째 인덱스)에는 배열의 크기 등 이차원 배열의 값 외에 다른 정보가 들어갈 수 있다
# 지금은 배열의 행 수를 입력했다고 가정하고 뽑아내겠음

array = []
for i in range(1, n+1):
	row = list(map(int, data[i].strip().split())) # 각 줄을 정수 리스트로 반환한다
	array.append(row) # append() = push()

print(array)

위 코드를 실행해보자

# 입력값
3
1 2 3
4 5 6
7 8 9

# 입력값을 다 넣었다는 신호를 ctrl+D로 줘야한다.

쨘! 🎉

input()

한 줄의 문자열을 입력받을 때

str = input() # 문자열
num = int(input()) # 정수형

a, b = input().split() # 띄어쓰기로 구분되는 값

map()

여러개의 값을 일차원 배열로 입력받을 때

리스트의 모든 원소에 각각 특정한 함수를 적용할 때

  • javascript map이랑 비슷하지만 python의 map은 map 객체라는 Iterable한 객체를 반환하고, 이를 list, tuple로 변환하여 사용해야 한다
    • 그래서 밑에 예제에서도 list로 변환해주고 있다
arr = list(map(int, input().split())) # 띄어쓰기로 구분하는 정수형

sys.stdin

파일 입출력 시

sys.stdin = open("input.txt", "r")
  • stdin : standart input의 약자. stdout(standard out), stderr(standard error)도 있음

for

여러값을 배열로 입력받는 경우

여러개의 값을 일차원 배열로 입력받을 때

arr = []
for i in range(n):
	arr.append(int(input())) # 띄어쓰기로 구분하는 정수형인데 n값도 함께 입력받는 경우

arr = [int(input()) for _ in range(n)] # 엔터로 구분하는 정수형. n이 엔터 횟수

arr = [input() for _ in range(i)] # 엔터로 구분하는 문자열. 배열 속 문자열 하나하나가 값으로 입력됨

여러개의 값을 이차원 배열로 입력 받을 때 (이차원 배열 === 테이블

arr[first][second] # first second 사이는 엔터로 구분됨

arr = [list(map(int, input()) for _ in range(n)]
# 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제1 참고

arr = [list(map(int, input().split())) for _ in range(n)]
# 띄어쓰기로 구분하는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제 2 참고

(예제1) 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

(예제2) 띄어쓰기 구분이 있는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input().split())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

정수 → 배열로

num = 12345
arr = list(map(int, str(num))

빠른 입력

import sys
n = int(sys.stdin.readline())

print(n)
  • sys : 시스템 관련 작업을 수행할 수 있는 다양한 함수와 변수 제공
  • sys.stdin()
    • 표준 입력 스트림
  • .readline()
    • 입력된 한 줄을 문자열로 읽음
  • 위 예제 코드를 실행시키고 123을 입력했더니 123이 출력됐다

🤨 흠.. 그럼 input하고는 뭐가 다르지..?

sys.stdin.readlin() 이 input() 함수보다 더 빠르게 입력을 읽을 수 있다고 한다. 그래서 큰 입력을 효율적으로 처리할 때 사용된다고. 123 같은거 말고

😏 이차원 배열을 sys를 사용해서 받아보고 싶어졌다

import sys
input = sys.stdin.read # 우선 입력을 한번에 읽어온다
data = input().strip().split("\\n") # 입력을 줄 단위로 나누어 리스트로 변환한다
# strip() = trim()

n = int(data[0].strip())
# 첫번째 줄(0번째 인덱스)에는 배열의 크기 등 이차원 배열의 값 외에 다른 정보가 들어갈 수 있다
# 지금은 배열의 행 수를 입력했다고 가정하고 뽑아내겠음

array = []
for i in range(1, n+1):
	row = list(map(int, data[i].strip().split())) # 각 줄을 정수 리스트로 반환한다
	array.append(row) # append() = push()

print(array)

위 코드를 실행해보자

# 입력값
3
1 2 3
4 5 6
7 8 9

# 입력값을 다 넣었다는 신호를 ctrl+D로 줘야한다.

쨘! 🎉

input()

한 줄의 문자열을 입력받을 때

str = input() # 문자열
num = int(input()) # 정수형

a, b = input().split() # 띄어쓰기로 구분되는 값

map()

여러개의 값을 일차원 배열로 입력받을 때

리스트의 모든 원소에 각각 특정한 함수를 적용할 때

  • javascript map이랑 비슷하지만 python의 map은 map 객체라는 Iterable한 객체를 반환하고, 이를 list, tuple로 변환하여 사용해야 한다
    • 그래서 밑에 예제에서도 list로 변환해주고 있다
arr = list(map(int, input().split())) # 띄어쓰기로 구분하는 정수형

sys.stdin

파일 입출력 시

sys.stdin = open("input.txt", "r")
  • stdin : standart input의 약자. stdout(standard out), stderr(standard error)도 있음

for

여러값을 배열로 입력받는 경우

여러개의 값을 일차원 배열로 입력받을 때

arr = []
for i in range(n):
	arr.append(int(input())) # 띄어쓰기로 구분하는 정수형인데 n값도 함께 입력받는 경우

arr = [int(input()) for _ in range(n)] # 엔터로 구분하는 정수형. n이 엔터 횟수

arr = [input() for _ in range(i)] # 엔터로 구분하는 문자열. 배열 속 문자열 하나하나가 값으로 입력됨

여러개의 값을 이차원 배열로 입력 받을 때 (이차원 배열 === 테이블

arr[first][second] # first second 사이는 엔터로 구분됨

arr = [list(map(int, input()) for _ in range(n)]
# 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제1 참고

arr = [list(map(int, input().split())) for _ in range(n)]
# 띄어쓰기로 구분하는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제 2 참고

(예제1) 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

(예제2) 띄어쓰기 구분이 있는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input().split())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

정수 → 배열로

num = 12345
arr = list(map(int, str(num))

빠른 입력

import sys
n = int(sys.stdin.readline())

print(n)
  • sys : 시스템 관련 작업을 수행할 수 있는 다양한 함수와 변수 제공
  • sys.stdin()
    • 표준 입력 스트림
  • .readline()
    • 입력된 한 줄을 문자열로 읽음
  • 위 예제 코드를 실행시키고 123을 입력했더니 123이 출력됐다

🤨 흠.. 그럼 input하고는 뭐가 다르지..?

sys.stdin.readlin() 이 input() 함수보다 더 빠르게 입력을 읽을 수 있다고 한다. 그래서 큰 입력을 효율적으로 처리할 때 사용된다고. 123 같은거 말고

😏 이차원 배열을 sys를 사용해서 받아보고 싶어졌다

import sys
input = sys.stdin.read # 우선 입력을 한번에 읽어온다
data = input().strip().split("\\n") # 입력을 줄 단위로 나누어 리스트로 변환한다
# strip() = trim()

n = int(data[0].strip())
# 첫번째 줄(0번째 인덱스)에는 배열의 크기 등 이차원 배열의 값 외에 다른 정보가 들어갈 수 있다
# 지금은 배열의 행 수를 입력했다고 가정하고 뽑아내겠음

array = []
for i in range(1, n+1):
	row = list(map(int, data[i].strip().split())) # 각 줄을 정수 리스트로 반환한다
	array.append(row) # append() = push()

print(array)

위 코드를 실행해보자

# 입력값
3
1 2 3
4 5 6
7 8 9

# 입력값을 다 넣었다는 신호를 ctrl+D로 줘야한다.

쨘! 🎉

input()

한 줄의 문자열을 입력받을 때

str = input() # 문자열
num = int(input()) # 정수형

a, b = input().split() # 띄어쓰기로 구분되는 값

map()

여러개의 값을 일차원 배열로 입력받을 때

리스트의 모든 원소에 각각 특정한 함수를 적용할 때

  • javascript map이랑 비슷하지만 python의 map은 map 객체라는 Iterable한 객체를 반환하고, 이를 list, tuple로 변환하여 사용해야 한다
    • 그래서 밑에 예제에서도 list로 변환해주고 있다
arr = list(map(int, input().split())) # 띄어쓰기로 구분하는 정수형

sys.stdin

파일 입출력 시

sys.stdin = open("input.txt", "r")
  • stdin : standart input의 약자. stdout(standard out), stderr(standard error)도 있음

for

여러값을 배열로 입력받는 경우

여러개의 값을 일차원 배열로 입력받을 때

arr = []
for i in range(n):
	arr.append(int(input())) # 띄어쓰기로 구분하는 정수형인데 n값도 함께 입력받는 경우

arr = [int(input()) for _ in range(n)] # 엔터로 구분하는 정수형. n이 엔터 횟수

arr = [input() for _ in range(i)] # 엔터로 구분하는 문자열. 배열 속 문자열 하나하나가 값으로 입력됨

여러개의 값을 이차원 배열로 입력 받을 때 (이차원 배열 === 테이블

arr[first][second] # first second 사이는 엔터로 구분됨

arr = [list(map(int, input()) for _ in range(n)]
# 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제1 참고

arr = [list(map(int, input().split())) for _ in range(n)]
# 띄어쓰기로 구분하는 문자열(숫자로 구성된)을 하나하나 받을 때. 아래 예제 2 참고

(예제1) 띄어쓰기 구분이 없는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

(예제2) 띄어쓰기 구분이 있는 문자열(숫자로 구성된)을 하나하나 뽑아낼때

n = 3 # 입력을 세번 받음
arr = [list(map(int, input().split())) for _ in range(n)]

print(arr)
  • 123, 456, 789 를 입력해보았다

정수 → 배열로

num = 12345
arr = list(map(int, str(num))

빠른 입력

import sys
n = int(sys.stdin.readline())

print(n)
  • sys : 시스템 관련 작업을 수행할 수 있는 다양한 함수와 변수 제공
  • sys.stdin()
    • 표준 입력 스트림
  • .readline()
    • 입력된 한 줄을 문자열로 읽음
  • 위 예제 코드를 실행시키고 123을 입력했더니 123이 출력됐다

🤨 흠.. 그럼 input하고는 뭐가 다르지..?

sys.stdin.readlin() 이 input() 함수보다 더 빠르게 입력을 읽을 수 있다고 한다. 그래서 큰 입력을 효율적으로 처리할 때 사용된다고. 123 같은거 말고

😏 이차원 배열을 sys를 사용해서 받아보고 싶어졌다

import sys
input = sys.stdin.read # 우선 입력을 한번에 읽어온다
data = input().strip().split("\\n") # 입력을 줄 단위로 나누어 리스트로 변환한다
# strip() = trim()

n = int(data[0].strip())
# 첫번째 줄(0번째 인덱스)에는 배열의 크기 등 이차원 배열의 값 외에 다른 정보가 들어갈 수 있다
# 지금은 배열의 행 수를 입력했다고 가정하고 뽑아내겠음

array = []
for i in range(1, n+1):
	row = list(map(int, data[i].strip().split())) # 각 줄을 정수 리스트로 반환한다
	array.append(row) # append() = push()

print(array)

위 코드를 실행해보자

# 입력값
3
1 2 3
4 5 6
7 8 9

# 입력값을 다 넣었다는 신호를 ctrl+D로 줘야한다.

쨘! 🎉

'Algorithm > 기본 지식' 카테고리의 다른 글

lambda 함수란?  (0) 2024.07.26