## 문제
BOJ 15552 빠른 A+B
## 풀이
첫 줄에 테스트케이스 T가 주어지고(1000000 이하)
다음 T줄에는 두 정수가 주어지는데 (1 이상 1000 이하)
각 테스트케이스마다 A+B를 한 줄에 하나씩 출력한다.
단 시간제한 1초가 있다.
## 코드
### python의 경우
rstrip는 문자열 자체를 변수에 저장할때의 이야기이고, 개행문자가 맨 끝에 들어와도 int변환이나 split()을 그대로 할 수 있다고한다.
int(sys.stdin.readline()), sys.stdin.readline().split() 이렇게 해도 아무 문제가 없다는 것.
코드가 길어지므로 input = sys.stdin.readline 을 처음에 하고 쓰도록 하자.
### C++의 경우
```cpp
/*코드 추가하기*/
```
- scanf, printf는 충분히 빨라서 그냥 사용해도 된다고 한다.
- endl은 개행문자를 출력할 뿐 아니라 출력 버퍼를 비우는 역할까지 한다. 그래서 출력한 뒤에 화면에 바로 보이게 할 수 있는데, 그 버퍼를 비우는 작업이 느리다.
게다가 온라인 저지에서는 화면에 바로 보여지는것은 중요하지 않고, 무엇이 출력되는가가 중요하므로 버퍼를 그렇게 자주 비울 필요가 없다. 그래서 endl을 '\n'으로 바꾸는 것 만으로 시간 향상이 나타난다.
- cin.tie(NULL) 은 cin과 cout의 묶음을 풀어준다. cin으로 읽을때 먼저 출력 버퍼를 비우는데, 마찬가지로 온라인 저지에서는 화면에 바로 보여지는 것이 중요하지 않다. 입력과 출력을 여러 번 번갈아서 반복해야 하는 경우 필수적이다.
- ios_base::sync_with_stdio(false)는 c와 c++의 버퍼를 분리한다. 이것을 사용하면 cin/cout이 더 이상 stdin/stdout과 맞춰 줄 필요가 없으므로 속도가 빨라진다. 단, 버퍼가 분리되엇으므로 cin과 scanf, gets, getchar 등을 같이 사용하면 안 되고, cout과 printf, puts, putchar 등을 같이 사용하면 안된다.
위 내용의 출처는 해당 문제 주의할 점 부분.
0 댓글