백준BOJ 입력받기 - python - input, split, map, try except, sys.stdin
백준 문제풀이를 시작했다.
평소 프로그래머스 문제들만 풀다가 처음 백준을 풀기 시작했는데 변수 입력받는 것부터 헤매서 정리를 하려고 한다.
1000번: A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
split()
a.split()처럼 괄호 안에 아무 값도 넣어 주지 않으면 공백(스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 준다. 만약 b.split(':')처럼 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다.
input().split()
여러개 입력받을 때. 리스트 형태로 반환
map
map(데이터 타입, 리스트) : 리스트 원소들을 해당 데이터 타입으로 변환
# sys.stdin.readline() 이용
import sys
a, b = map(int, sys.stdin.readline().split())
print(a+b)
# input() 이용
a, b = map(int, input().split())
print(a+b)
sys.stdin.readline()과 input()의 차이는 또 다른 글에서 정리해야겠다.
일단 전자가 더 빠른 방식이라는 것을 알고 넘어가자!
2558번: A+B - 2
첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10)
www.acmicpc.net
a = int(input())
b = int(input())
print(a+b)
10950번: A+B - 3
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
n = int(input())
for _ in range(n):
a,b = map(int, input().split())
print(a+b)
for i in range(n) 에서 i가 의미 없을 때, _로 대체하여 반복문을 사용한다.
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
입력이 몇개인지 주어지지 않은 경우, EOF까지 입력받으면 된다.
while True:
try:
a, b = map(int, input().split())
print(a+b)
except:
break
try except 처리문
예외가 발생했을 때도 스크립트 실행을 중단하지 않고 계속 실행하게 해주는 예외 처리 방법.
try의 코드에서 에러가 발생했을 때만 except의 코드가 실행된다.
dojang.io/mod/page/view.php?id=2398
여기서 try except 문의 좀더 자세한 문법을 확인할 수 있다.
파이썬 코딩 도장: 38.1 try except로 사용하기
Unit 38. 예외 처리 사용하기 예외(exception)란 코드를 실행하는 중에 발생한 에러를 뜻합니다. 다음과 같이 10을 어떤 값으로 나누는 함수 ten_div가 있을 때 인수에 따라 정상으로 동작하기도 하고 에
dojang.io
여러 줄을 입력받을 땐 sys.stdin를 이용할 수도 있다.
import sys
for line in sys.stdin:
a, b = map(int, line.split())
print(a+b)
sys.stdin을 이용하면 input보다 좀더 빠르게 처리된다.
이 문제에서는 효율성 측면에서 많이 도움되진 않지만 입력값이 많을 땐 input 보다 sys.stdin을 이용해야겠다.