티스토리 뷰

반응형
 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

A,B = map(int,input().split())
print(A+B)

python에서 사용자의 입력을 받는 방법은 2가지가 있다.

하나는 input() 함수를 사용하는 것이고, 하나는 sys 모듈을 import한 뒤에 sys.stdin.readline() 함수로 한 줄씩 읽어가는 것이다.

만약 사용자의 입력이 2개 이상이라면, 공백으로 구분되어 출력된다.

# 3 4를 입력할 경우
print(input())
3 4
# 3 4를 입력할 경우
import sys
print(sys.stdin.readline())
3 4  # 사실은 3 4\n 임

둘 다 출력 상에서는 똑같은 3 4 로 나타나지만 sys.stdin.readline() 함수의 경우 뒤에 \n이 붙어있는 형태가 된다.

따라서 만약 int의 형태로 만들고 싶다면, .strip()이나 .rstrip()을 뒤에 붙여서 붙어 있는 \n을 없애면 된다.

 

만약에 a라는 하나의 변수가 아닌, a,b 2개의 출력으로 만들고 싶다면 map 함수를 이용하면 된다.

map 함수는 map(실행할 함수,넣을 수)의 형태로 만들어져 넣을 수를 함수에 넣어 한번씩 실행한다.

따라서 만약 실행할 함수에 int, 넣을 수에 3 4 를 넣는다면 이건 실행이 안된다. 왜냐, 3 4 라는 건 int로 만들 수 없기 떄문이다. 파이썬은 중간에 공백이 포함된 이런 형태를 숫자로 인식할 수 없다. 문자열로는 만들 수 있지만 말이다.

 

이럴때 필요한게 .split() 메소드이다. input() 함수와 sys.stdin.readline()  함수 뒤 모두에 붙여쓸 수 있는 것으로, 이걸 붙이면 공백을 기준으로 문자를 나누어준다. 즉, input().split() 이나 sys.stdin.readline().split()과 같이 쓴다면, 3 4도 3과 4로 인식되어 들어간다. 즉, map(int, input().split() ) 에 3 4를 넣으면 3을 int로 만들어 먼저 반환하고, 그 다음에 4를 int로 만들어 반환한다. 그래서 a,b =  map(int, input().split() ) 는 a에 3, b에 4가 들어가는 구조로 성립되어 반환된다.

 

이 형태는 많은 코딩테스트에서 쓰이는 형태이다. 특히나 웬만하면 input()을 쓰지 말고, sys.stdin.readline()을 쓰는 습관을 들이는 것이 좋다.

왜냐하면 읽어들이는 숫자가 많아질수록 연산 속도면에서 sys.stdin.readline()가 더 효율적으로 연산하기 때문이다. 코딩테스트에서 테스트 케이스들의 연산 횟수는 대부분 10만을 넘어가는 수준이 많기 떄문에 그렇다.

 

아무튼 그렇게 a와 b를 받았으면 print(a+b) 와 같이 출력해주면 된다. 연산자가 중간에 들어갔을 때 자동으로 계산 해주기 떄문에 코드를 짧게 하기 편리하다.

반응형