728x90
728x90
문제
Hello World!를 출력하시오.
입력
없음
출력
Hello World!를 출력하시오.
예제 입력 1
예제 출력 1
Hello World!
알고리즘 분류
- 구현
문제 출처
https://www.acmicpc.net/problem/2557
문제 해결 방법
- 간단하게 cout을 이용하여 풀었다.
코드
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
return 0;
}
채점 결과
참고
- [단계별로 풀어보기] > [입출력과 사칙연산]
cout vs. printf
cout
- <iostream> 헤더를 불러와야 사용할 수 있다.
- C++의 스트림 유형의 객체
- 출력하려는 값의 자료형을 컴파일러가 검사할 수 있다.
- 출력하려는 값의 형에 따라 적절한 함수를 호출한다.
std::cout << 2 << endl; // int형 출력 함수 호출
std::cout << 1.5 << endl; // double형 출력 함수 호출
- 파일 입출력(fstream) 및 스트링 입출력(stringstream)에서도 표준 입출력과 동일한 인터페이스를 사용하므로 편리하다.
- printf 에 비해 처리 속도가 느리다.
printf
- <cstdio> 헤더를 불러와야 사용할 수 있다.
- C의 형식화된 문자열을 표시하는데 주로 사용되는 함수
- cout과 달리 출력하려는 값의 자료형을 컴파일러가 검사할 수 없다.
- 버그가 발생할 확률이 높다.
- cout 에 비해 처리 속도가 빠르다.
- 일반적으로 cin/cout/endl이 scanf/printf/\n 보다 속도가 느리다고 보면 된다.
시간 차이?
- C++에서 C의 stdio buffer를 동기화하는 과정에서 딜레이가 발생하기 때문에 cout 과 printf 간에 시간 차이가 발생한다.
- 이러한 시간 차이를 극복하기 위해서 다음과 같은 방법을 사용할 수 있다.
① 개행 시, endl 이 아닌 \n 사용하기
- cout 을 사용하면서 개행 시에 flush가 불필요하게 호출되지 않게 endl 보다는 \n 을 사용한다.
cout << "Hello World!" << endl;
cout << "Hello World! \n";
② cout.tie(NULL); 또는 sync_with_stdio(false); 사용하기
- C와 비슷하게 가속시켜주지만, 해당 함수를 선언한 뒤에는 printf 나 scanf 와 같은 C 표준 입출력을 사용할 수 없게 된다.
int main() {
cout.tie(NULL);
ios_base::sync_with_stdio(false);
}
무엇을 사용하는 것이 나을까?
- 시간적인 측면을 배제하고, 안정성, 에러, 확장성과 상속을 생각했을 때 <iostream>이 <cstdio> 보다 낫다.
① Type Safe
- <iostream> : 컴파일러가 I/O 되는 객체 타입을 static 하게 알 수 있다.
- <cstdio> : % 토큰을 써서 type를 dynamic 하게 알아낸다.
② Less Error Prone
- <iostream> : % 토큰을 쓰지 않기 때문에 에러를 줄일 수 있다.
- <cstdio> : % 토큰을 쓰기 때문에 형식 지정자가 실제로 입출력할 객체와 일치해야 한다.
③ Extensible
- <iostream> : 기존의 코드를 바꾸지 않고 사용자가 정의한 타입을 입출력할 수 있다.
- <cstdio> : 그렇지 않다.
④ Inheritable
- <iostream> : std::ostream 이나 std::istream 같은 Real Class로부터 만들어졌기 때문에 상속이 가능하다.
- 사용자가 정의한 것들도 stream처럼 보이고, stream처럼 작용한다.
- <cstdio> : FILE* 같은 경우 상속이 불가능하다.
내용 출처 : Click
728x90
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ-10869][C++] 사칙연산 (0) | 2022.07.07 |
---|---|
[BOJ-1008][C++] A/B (0) | 2022.07.07 |
[BOJ-10998][C++] A×B (0) | 2022.07.07 |
[BOJ-1001][C++] A-B (0) | 2022.07.07 |
[BOJ-1000][C++] A+B (0) | 2022.07.07 |
[BOJ-10172][C++] 개 (0) | 2022.07.07 |
[BOJ-10171][C++] 고양이 (0) | 2022.07.06 |
[BOJ-10718][C++] We love kriii (0) | 2022.07.06 |