개발기록장

코딩 테스트에 필요한 기초 문법 (with 파이썬) - 입출력 본문

TIL/알고리즘 with 파이썬

코딩 테스트에 필요한 기초 문법 (with 파이썬) - 입출력

yangahh 2020. 10. 14. 18:58

 

코딩테스트 문제를 풀 때 첫 번째 단계는 데이터를 입력받는 것입니다.

자주 쓰이는 입출력 방식을 정리해보았습니다.

 


 

입력

 

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살 입니다.
'''