백준 #9 [C++] 10869. 사칙연산, endl과 \n의 사용

K Choi·2022년 1월 19일
0

백준

목록 보기
9/37
post-thumbnail

문제

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.

입력

두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

출력

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.

예제 입력

7 3

예제 출력

10
4
21
2
1

풀이

[C] 코드

#include <stdio.h>
int main() {
    int A, B;
    scanf("%d%d", &A, &B);
    printf("%d\n", A+B);
    printf("%d\n", A-B);
    printf("%d\n", A*B);
    printf("%d\n", A/B);
    printf("%d\n", A%B);
    return 0;
}

앗 개행 안 했다가 틀림......아까워요ㅠㅠ
문제에서 괜히 첫째줄에~, 둘째줄에~, ... 이런 게 아닐텐데
문제 꼼꼼히 읽어야겠습니다.

[C++] 제출 코드

#include <iostream>
using namespace std;
int main() {
    int A, B;
    cin >> A >> B;
    cout << A+B << endl;
    cout << A-B << endl;
    cout << A*B << endl;
    cout << A/B << endl;
    cout << A%B << endl;
    return 0;
}

오히려 C++코드는 endl 잘 써줘서 맞췄네요ㅋㅋ
#7번 포스팅에서 endl과 \n의 차이를 공부하긴 했는데
실제 코드 작성하면서는 뭘 써야 되는지 감이 잘 안 오더라구요.

그래서 좀더 찾아봤습니다.

endl vs.\n 언제 사용하나?

  • 조정자 endl: 새로운 행이 시작됨을 나타내는 표기로, iostream 헤더 파일에 정의 되어 있고 std namespace에 속합니다. endl을 출력 스트림에 삽입하면 화면 커서가 다음 행의 시작 위치로 이동합니다.
    cf. 조정자(manipulator): cout에게 특수한 의미를 가지는 표기들
  • 개행문자\n: 출력에 새로운 행을 나타내는 표기

그럼 endl\n은 각각 어떤 상황에서 사용할까요?

cout << "Hi, how are you? \n I'm fine, thank you." << endl;

대체로 따옴표로 묶인 문자열을 출력할 때 개행문자 \n을 사용하고,
그 밖의 경우는 endl을 사용하는데 7번 포스팅에서 살펴본 것처럼 endl은 출력 버퍼를 비우고(flush) 다음 내용을 진행해 오버헤드가 크고, \n은 버퍼에 계속 쌓다가 일정 크기가 넘어갈 때 flush하므로 endl에 비해 오버헤드가 덜합니다.

따라서 실시간으로 flush가 필요한 것이 아니라면 endl 대신 \n을 써서 개행하는 게 좋겠습니다.

profile
mbeCoder

0개의 댓글