입력 받기

cheeeese·2021년 12월 30일
0

공부

목록 보기
1/6

입력 받는 여러 방법
https://covenant.tistory.com/141 참고했음..

1. 한 줄에 입력 받기

1 2 
a, b = map(int, input().split())

2. 여러 줄 입력

1
2
14
97
3
100
25
718
21
  • 이런 식으로 여러 줄을 입력받을 때 input()을 사용하면 시간 초과가 나올 수 있다
  • 이럴 때 입출력 가속 함수인 sys.stdin.readline()를 사용하면 시간 초과 발생 안함
import sys 
a = int(sys.stdin.readline())
sys.stdout.write(a)

또는

from sys import stdin, stdout
input = stdin.readline 
print = stdout.write

이 땐 평소에 print() 함수를 호출하듯이 쓰면 된다

한 개의 정수 입력

import sys
a = int(sys.stdin.readline())

한 줄 단위로 입력받기 때문에 개행 문자인 \n도 같이 입력되어 반드시 int로 형 변환을 해주어야 정수를 입력받을 수 있다

지정 된 개수 입력

import sys
a, b, c = map(int,sys.stdin.readline().split())

임의의 개수의 정수를 한 줄에 입력 받아 리스트에 저장

import sys
data = list(map(int,sys.stdin.readline().split()))

임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장

import sys
data = []
n = int(sys.stdin.readline())
for i in range(n):
    data.append(list(map(int,sys.stdin.readline().split())))

문자열 n줄을 입력받아 리스트에 저장

import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)

3. 배열에 저장

3
1 2 3
4 5 6
7 8 9

첫 번째 줄에는 입력되는 숫자들의 줄 수가 주어지고 다음 줄 부터 배열에 입력될 숫자들이 주어짐

MAP = [list(map(int, input().split())) for _ in range(int(input()))]
  • for_ in range: 인덱스가 필요없는 for문에서 사용

정수와 배열이 같은 줄에 들어오는 경우

4 10 20 30 40
3 7 5 12
3 125 15 25
N, *arr = map(int, input().split())
  • arr 변수 앞에 *를 붙이면 뒤이어 나오는 값이 arr에 배열로 저장 됨
    -> 4N에 저장 되며 arr에는 [10, 20, 30, 40] 이 저장됨


문자열을 한 글자씩 배열에 저장

3
AAAA 
ABCA 
AAAA
arr = [list(input()) for _ in range(N)]

저장된 모습

arr = [['A', 'A', 'A', 'A']
       ['A', 'B', 'C', 'A']
       ['A', 'A', 'A', 'A']]

만약 arr = [input() for _ in range(N)] 이렇게 한다면 arr = ['AAAA', 'ABCA', 'AAAA'] 로 저장 됨



4. 배열을 연결해서 출력

arr = [1, 2, 3, 4] 

1)

arr = [1, 2, 3, 4] 
print("".join(map(str, arr)))

출력 결과

1234
  • arr에 저장되어 있는 정수의 값을 string 형식으로 변환 후 "".join을 이용하여 공백 없이 값을 출력

2)

for num in arr:
    print(num)

이렇게 해도 되지만 아래 코드처럼 하면 더 간단

print(*arr)

출력 결과

1 2 3 4

0개의 댓글