일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 이것이 취업을 위한 코딩테스트다
- 쉽게 배우는 데이터 통신과 컴퓨터 네트워크
- 라우팅
- 노마드코더
- 이것이 취업을 위한 코딩 테스트다
- icmp
- 노개북
- 데이터통신
- CS
- GIT
- RARP
- 리스트
- data type
- ARP
- sort()
- 파이썬 정렬
- 파이썬 연산자
- 파이썬 자료형
- 컴퓨터 동작방식
- 시스템 소프트웨어
- OSI7계층모델
- 쿠키
- IT5분잡학사전
- 북클럽
- 데이터 통신과 컴퓨터 네트워크
- 자료형
- 기억장치
- DP
- 이코테
- 컴퓨터네트워크
- Today
- Total
뚝딱햄 탈출기
[Python] 입출력 : 여러 테스트 케이스 입력, 특정 값이 들어올 때까지 입력, 리스트 요소 한 줄에 하나씩 출력 본문
[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]
공백 없이 입력된 여러 개의 테스트 케이스 입력받기 (리스트에 각각의 요소로 저장하기)
여러 라인의 테스트 케이스 입력받기
문자열 여러 줄
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)]
특정 값이 들어올 때까지 입력받기
위의 문제와 같이 특정 값이 들어올 때까지 입력을 받아야 할 때가 있다.
그럴 때는 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차원 배열 입력받기
출력
리스트의 요소들을 한 줄에 하나씩 출력해야 하는 경우, 아래 방법을 사용한다.
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))
백준 진짜 불편해 =____________=
하지만 새로운 걸 알아가니 오히려 조와 ~