뚝딱햄 탈출기

[Python] 입출력 : 여러 테스트 케이스 입력, 특정 값이 들어올 때까지 입력, 리스트 요소 한 줄에 하나씩 출력 본문

Algorithm & Data structure/알고리즘 문제 풀이

[Python] 입출력 : 여러 테스트 케이스 입력, 특정 값이 들어올 때까지 입력, 리스트 요소 한 줄에 하나씩 출력

hyrmzz1 2023. 10. 17. 00:39

프로그래머스에서만 문제 풀다가 백준에서 문제를 풀고 직면한 문제...... 바로 입력 🫥🫥🫥

 

기존에 입출력에 대해 정리한 글이 있지만, 다시 정리하며 머리에 넣어본다.

입력

input()이 아닌 sys.stdin.readline()을 사용하자. (훨씬 빠른 속도로 입력값을 받는다 !)

문제를 풀 때, 입력의 개수가 많은 경우가 있다. input()으로 입력값을 받으면 시간 초과가 발생할 수 있다.

 

sys.stdin.readline()을 사용할 땐 sys 라이브러리를 import 해주어야 한다.

또한 입력값이 str로 들어오기 때문에 숫자를 입력받는다면 int()를 통해 형변환을 시켜주어야 한다.

 

sys 라이브러리를 사용할 때는 한 줄 입력을 받고 나서 rstrip() 함수를 반드시 호출해야 하는데,

readline()으로 입력하면 입력 후 엔터가 줄 바꿈 기호로 입력되기 때문에 이 공백 문자를 제거하기 위함이다.

한 줄로 된 테스트 케이스 입력받기

공백으로 구분된 여러 개의 테스트 케이스 입력받기

import sys  
a = list(map(int, sys.stdin.readline().split())) # a = [1, 2, 3, 4, 5]

공백 없이 입력된 여러 개의 테스트 케이스 입력받기 (리스트에 각각의 요소로 저장하기)

2023.10.21 - [Algorithm & Data structure/문제 풀이] - [Python] 입출력 : 2차원 리스트 입력받기, 공백없는 입력값(문자열, 숫자) 리스트에 각각 요소로 저장하기

 

[Python] 입출력 : 2차원 리스트 입력받기, 공백없는 문자열 리스트에 각각 요소로 저장하기

여러 줄에 걸쳐 공백 없이 입력된 입력값을 2차원 리스트로 저장하려면 어떻게 해야 할까? N × M 크기의 2차원 배열을 입력받아보자. 첫 번째 줄에 행의 길이 N과 열의 길이 M이 주어지고, 두 번째

hyrmzz1.tistory.com

 

여러 라인의 테스트 케이스 입력받기

문자열 여러 줄

import sys  
n = int(sys.stdin.readline())
a = [sys.stdin.readline() for i in range(n)]  # a = ["1 2 3", "4 5 6"]

숫자 여러 줄

import sys
n = int(sys.stdin.readline())
a = [int(sys.stdin.readline()) for i in range(n)]

 

특정 값이 들어올 때까지 입력받기

BOJ 10952번. A + B - 5

위의 문제와 같이 특정 값이 들어올 때까지 입력을 받아야 할 때가 있다.

그럴 때는 while문을 사용해 무한 루프를 돌리고, 특정 값이 들어왔을 때 break를 해준다.

import sys

while 1:	# while True 와 같다.
    n = list(map(int, sys.stdin.readline().rstrip().split()))
    if(n[0] == 0 and n[1] == 0):	# 특정 값 들어오면
        break	# 무한 루프 종료
    else:
        print(n[0] + n[1])

 

2차원 배열 입력받기

2023.10.21 - [Algorithm & Data structure/문제 풀이] - [Python] 입출력 : 2차원 리스트 입력받기, 공백없는 입력값(문자열, 숫자) 리스트에 각각 요소로 저장하기

 

[Python] 입출력 : 2차원 리스트 입력받기, 공백없는 문자열 리스트에 각각 요소로 저장하기

여러 줄에 걸쳐 공백 없이 입력된 입력값을 2차원 리스트로 저장하려면 어떻게 해야 할까? N × M 크기의 2차원 배열을 입력받아보자. 첫 번째 줄에 행의 길이 N과 열의 길이 M이 주어지고, 두 번째

hyrmzz1.tistory.com

 


출력

리스트의 요소들을 한 줄에 하나씩 출력해야 하는 경우, 아래 방법을 사용한다.

1. for 문 사용

list = [1, 2, 3, 4, 5]

for i in list:
	print(i)

2. print의 sep 옵션

print(1, 2, 3, 4, 5)	# 공백 추가되어 출력. 1 2 3 4 5
print(1, 2, 3, 4, 5, sep = '\n')	# sep 인자에 줄바꿈 구분자를 넣는다.
'''
1
2
3
4
5
'''

print의 sep 인자에 원하는 구분자를 넣으면 요소들 사이에 구분자를 넣어 출력할 수 있다.

sep 인자의 default 값은 공백이기 때문에 첫 번째 코드를 실행하면 요소들 사이에 공백이 추가되어 출력된다.

⭐  Unpacking Operator * 사용 ⭐

리스트의 요소들을 출력할 때 sep 인자를 사용해 공백을 추가하려면, '*'를 붙여줘야 한다!

list = [1, 2, 3, 4, 5]
print(*list, sep = '\n')

3. join() 사용

join() 함수는 리스트에 담긴 문자열을 연결하기 위해 사용하는 함수이다.

따라서 리스트에 담긴 요소들이 모두 문자열일 때만 사용 가능한 방법이다.

list = ['1', '2', '3', '4', '5']
print('\n'.join(list))

 


백준 진짜 불편해 =____________=

하지만 새로운 걸 알아가니 오히려 조와 ~ 

Comments