일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 리스트컴프리헨션
- 인증인가
- 해시충돌
- DP
- wecode
- QuerySet
- RESTfulAPI
- *args
- 코딩테스트파이썬
- 윈도우우분투듀얼부팅
- promise
- 파이썬리스트컴프리헨션
- 파이썬문법
- 자바스크립트
- decorator
- bcrypt
- **kwargs
- Python
- docker
- JavaScript
- 파이썬입출력
- clone coding
- clone-coding
- 알고리즘
- django
- 백준
- 인터넷 네트워크
- 자료구조
- CSS
- 파이썬
- Today
- Total
개발기록장
코딩 테스트에 필요한 기초 문법 (with 파이썬) - 입출력 본문
코딩테스트 문제를 풀 때 첫 번째 단계는 데이터를 입력받는 것입니다.
자주 쓰이는 입출력 방식을 정리해보았습니다.
입력
1. 정수 입력받기
- 공백으로 구분 된 여러 개의 정수를 받아올 때
# 예를 들어 문제에 1 2 3 4 5 가 주어졌을 때
a = list(map(int, input().split()))
print(a) # [1, 2, 3, 4, 5]
input()으로 입력을 받으면 string타입으로 저장된다.
split()은 공백을 기준으로 string을 쪼개는 함수이다. ( )안에 '\n' ',' 등 구분자를 추가하면 구분자를 기준으로 대상 string을 쪼갠다는 의미이다. ( )안에 아무것도 넣지 않으면 공백이 구분자가 된다.
input().split()까지 하면 ['1', '2', '3', '4', '5'] 로 저장이 된다.
문제에서 정수를 입력받는다고 했으므로 해당 리스트의 원소들을 모두 정수형으로 바꿔줘야한다.
이때 map()함수를 이용하면 리스트의 모든 원소를 손쉽게 형변환을 할 수 있다.
** map 내장함수
map(함수, 리스트나 튜플형의 대상 객체)
map 함수를 사용하면 결과는 map 객체를 리턴한다.
따라서 입력받은 데이터에 접근이 용이하도록 list 형태로 변환하여 변수에 저장한다.
만일 입력받아 올 정수의 개수를 알고 있다면 아래 예시와 같이 한 번에 각각의 변수에 데이터를 저장할 수 있다.
#정수 n, m, k를 입력 받을 때
n, m, k = map(int, input().split())
2. 2차원 배열 입력받기
- N * M의 2차원 배열을 입력 받을 때는 아래의 방법으로 많이 사용한다. 꼭 기억해두자.
'''
예) 아래의 3 * 4 배열 입력 받기
0 0 0 1
1 0 0 0
0 1 0 0
'''
n = int(input())
m = int(input())
arr = []
for _ in range(n):
arr.append(list(map(int, input().split())))
# 리스트 컴프리헨션을 이용한 방법
arr = [list(map(int, input().split())) for _ in range(n)]
for문 안의 의미는 공백으로 구분된 정수들을 한 줄 씩 읽어오고 리스트형으로 arr이라는 리스트에 추가.
for문을 행(n) 번 만큼 반복하면 리스트 안에 리스트가 저장되므로 2차원 배열이 된다.
3. 입력의 개수가 많은 경우 (빠르게 입력받는 방법)
- 입력받아야 하는 데이터의 양이 많을 때
파이썬의 기본 input()함수는 동작 속도가 느려서 시간 초과로 오답 판정을 받을 수 있다.
이 경우에는 sys 라이브러리에 있는 sys.stdin.readline() 메서드를 활용하면 빠르게 데이터를 읽어올 수 있다.
아래의 코드가 이 메소드를 사용하는 통상적인 방법이다.
import sys
data = sys.stdin.readline().rstrip()
** sys.stdin.readline() 메서드를 사용하면 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되는데,
이를 제거하기 위해 반드시 rstrip() 함수를 사용해야 한다.
출력
출력할 때는 print() 함수를 사용한다.
print()는 자동으로 개행(줄 바꿈)을 해준다. 또한 ,를 이용하면 두 인자 사이에 공백을 넣어서 출력한다.
end 속성을 이용하면 출력 끝 문자를 지정해 줄 수 있다.
a = "hello"
b = "world"
print(a)
print(b)
'''
결과 ↓
hello
world
'''
print(a, b)
'''
결과 ↓
hello world
'''
print(a, end=" ")
print(b)
'''
결과 ↓
hello world
'''
+ 연산자는 문자열을 연결해주는 기호로 쓰이는데, 숫자형 + 문자 로 쓸 경우 에러가나므로 숫자는 str() 함수를 이용하여 문자열로 변경한 뒤 사용한다.
a = 10
print(str(a) + "살 입니다.")
'''
결과 ↓
10살 입니다.
'''
Python 3.6버전부터는 f-string 문법을 사용할 수 있다.
f-string을 이용하면 중괄호({ }) 안에 변수를 넣고 자료형 변환 없이도 간단히 문자열과 숫자를 출력할 수 있다.
name = "김철수"
age = 18
print(f'{name}는 {age}살 입니다.')
'''
결과 ↓
김철수는 18살 입니다.
'''
'TIL > 알고리즘 with 파이썬' 카테고리의 다른 글
[알고리즘] DP유형 - 백준 9461번 파이썬 (0) | 2021.01.05 |
---|---|
[알고리즘] DP유형 - 백준 9095번 파이썬 (0) | 2021.01.05 |
[알고리즘] DP유형 - 백준 1463번 파이썬 (0) | 2021.01.02 |
[알고리즘] 동적 계획법(Dynamic Programming, DP) 개념 정리 (0) | 2021.01.02 |
코딩 테스트에 필요한 기초 문법 (with 파이썬) - 리스트 컴프리헨션 (0) | 2020.10.12 |