[알고리즘_개념] 파이썬 입출력 input(), print()

Ha Song·2024년 4월 6일
post-thumbnail

알고리즘 코테 작성하다 보니, 입출력을 어떻게 하는지 자꾸 혼동이 와서 정리

입력

입력의 기본은

  • input() : 입력값 한 줄을 읽어옴, 읽어온 값는 항상 문자열(string) 취급
  • sys.stdin.readline() :
    • 개행문자를 포함해서 읽어옴
    • Python 은 입출력이 다른 언어에 비해 느린 편, input() 함수의 다중 호출만으로도 많은 시간이 소요됨. 이를 sys.stdin.readline 를 사용해서 개선함.
    • import 필요
import sys

input = sys.stdin.readline
n = input()

1. 한 단어일 때

input()

# 입력값 예시
3
n = input()
# number == 3
# 항상 문자열 취급이라, 숫자 변환 int() 해주어야 함

2. 한 줄 입력 - 구분자가 없을 때

list(map(int, input())
리스트로 받아서 쪼개서 쓰기

# 입력값 예시
12345
num_list = list(map(int, input())
# num_list == [1, 2, 3, 4, 5]

3. 한 줄 입력 - 구분자가 있을 때

input().split('구분자')

# 입력값 예시1 - 숫자로 받기
3 10

# 입력값 예시2 - 문자열로 받기
hello,world
# 변수 하나씩 값을 받을 때 - 예시 1 
# split() 구분자 안 넣으면 띄어쓰기가 기본적용 됨
x, y = map(int, input().split())
# x == 3, y == 10

# 리스트로 받아오는데, 숫자로 받아야 할 때
num_list = [map(int, input().split())]
# num_list == [3, 10]

# 문자열 리스트로 받아올 때
str_list = input().split(',')
# str_list == ['hello', 'world']

4. 여러 줄 입력 - n줄에 걸쳐 주어짐

반복문을 사용하여 입력값을 받기

# 입력값 예시
2
5 10
3 20
# 변수에 하나씩 담기 - 하나씩 계산이 필요할 때
N = int(input())

for i in range(N):
    A, B = map(int, input().split())
    # A == 5, B ==10
    # A == 3, B ==20
    
# 리스트에 담아서 활용하기 - 이렇게 되면 이중배열 이 된다.
num_list = []
for i in range(N):
    A, B = map(int, input().split())
    num_list.append([A,B])

# num_list == [[5, 10], [3, 20]]

주로 여기까지가 제일 많이 사용하고.. 그 밑으로는.. 알면 좋은 것!


5. 여러 줄 입력 - 몇 줄까지 있는지 모를 때

while True:
    try:
        A, B = map(int, input().split())
        
        print(A + B)
    except:
        break

6. 여러 줄 입력 - 마지막 행을 아는 경우

# 마지막 행은 0이 두 개이다.
while True:
	A, B = map(int, input().split())
    
    if A == 0 and B == 0:
    	break
    else:
    	print(A + B)

출력

출력의 기본

  • print(a) : a 의 값을 출력

1. 값 출력

# 예시
a = 3
b = 4
msg = "Hello, world!"
year = 2024
print(a) # 3

# 여러 개인 경우 공백으로 구분하여 출력
print(a, b) # 3 4 

## 자료형이 달라도 같이 출력 가능
print(year, msg) # 2024 Hello, world!

2. 줄바꿈 없이 출력하기 - end 옵션

print() 함수에 기본으로 한 줄 출력 후 줄바꿈이 있어서 줄바꿈 없이 하고 싶으면, end 옵션을 넣어 변경해준다.

end 옵션 (end="")

  • 출력 완료 후의 내용을 넣어 줄 수 있음
  • 기본 : 줄바꿈
  • 주로 한 칸씩 띄워서 출력하거나, 줄바꿈을 없애거나 할 때 사용, 문자도 넣을 수 있음
# 예시
num_list = [1, 2, 3, 4, 5]

for i in num_list:
	print(i, end=" ")
# 출력 _ 마지막 띄어쓰기 끝나고 %가 찍힐 수 있다.
# 1 2 3 4 5 %

3. 출력 중간에 뭔가 글씨 넣어 출력하기 - sep 옵션

sep 옵션 (sep="")

  • 여러 개 출력할 때, 기본 공백으로 출력되는 부분을 변경 할 수 있음
  • 기본 : 한 칸 띄어쓰기
# 예시
print('1-1','1-2','1-3') # 기본
print('1-1','1-2','1-3', sep='') #띄어쓰기 없애ㅐ서 나오게 하기
print('1-1','1-2','1-3', sep=',') #띄어쓰기 대신 콤마
# 출력
# 1-1 1-2 1-3
# 1-11-21-3
# 1-1,1-2,1-3

4. 변수 포함하여 출력하기

f-string 사용하여 문자열 + 변수명으로 쓸 수 있다.

string formatting : f-string 문자열 포매팅

  • 파이썬의 템플릿 리터럴이라고 생각하면 된다.
  • 출력 내용을 f'' 로 감싸준다.
  • {} 중괄호 안에 변수명을 직접 넣어 함께 사용할 수 있다.
# 예시
s = 'coffee'
n = 5
print(f'저는 {s}를 좋아합니다. 하루 {n}잔 마셔요.')
# 출력
# 저는 coffee를 좋아합니다. 하루 5잔 마셔요.

참고 문서
[Python] 백준, 파이썬 입력받기 (feat.input, split, map)
파이썬의 print() 함수 제대로 활용하기
[python] 파이썬 f-string (문자열 포매팅 방법 3)

profile
NICE 한 개발자, 노흘

0개의 댓글