알고리즘 문제풀기 소모임을 시작했다.
C++로 코딩해본적이 없어서, C++ 공부와 병행해야 한다.
일단 이번주는 입출력문제만 있기 때문에 가벼운 마음으로 시작.
0. c++ 컴파일
$ g++ -std=c++11 main.cpp -o main
1. 2557번_Hello World
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
- namespace
- 어떤 정의된 객체에 대해 어디 소속인지 지정해주는 것과 동일함.
- std라는 namespace에 정의되어 있는 cout 이라는 의미
- namespace를 정의하는 방법
- 이름을 지정하지 않고 namesapce를 만들면, 그 namespace는 해당 파일에서만 쓸 수 있다. static 선언처럼.
2. 1000번 & 2558번 A+B
#include <iostream>
int main()
{
int a, b;
std::cin >> a >> b;
std::cout << a + b << std::endl;
return 0;
}
- 변수선언, cin 사용
- 1000번은 공백으로 A, B가 구분되어 있고, 2558은 개행으로 두 수가 구분되어 있다.
- 코드는 두 문제를 동일하게 작성해도 통과할 수 있다.
3. 10950번_A+B-3
#include <iostream>
int main()
{
int i, T, a, b;
std::cin >> T;
for (i = 0; i < T; i++)
{
std::cin >> a >> b;
std::cout << a + b << std::endl;
}
return 0;
}
- 반복문 사용
4. 10951번_A+B-4
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (1)
{
cin >> a >> b;
if (cin.eof())
break;
cout << a + b << endl;
}
return 0;
}
- using namespace std 선언해주면, std::cin 에서 std:: 생략하고 사용 가능
- c++의 EOF 감지는 if(cin.eof()) 로 확인
- UNIX의 EOF 는 ctrl + d로 입력함
5. 10952번_A+B-5
#include <iostream>
int main()
{
int a, b;
while (1)
{
std::cin >> a >> b;
if (a == 0 && b == 0)
break;
std::cout << a + b << std::endl;
}
return 0;
}
- 별거 없는 비슷한 문제
- 0 0이 입력되면 프로그램 종료되는 것으로 종료 조건이 명시되어 있었다.
6. 10953번_A+B-6
#include <iostream>
int main()
{
int a, b;
char c;
std::cin >> a >> c >> b;
std::cout << a + b << std::endl;
return (0);
}
- A와 B 사이에 콤마가 들어가는 입력 형태이다.
- 어떻게 해야할지 감이 안와서 구글링을 해봤다. 사람마다 다르게 짠 것 같다.
- std::cin >> a >> c >> b;
- std::cin >> s;
- 입력받는 s를 string s로 받아서, 문자열 슬라이싱으로 a, b 추출 후 계산
- scanf("%d%c%d",&A,&c,&B); 이렇게 c언어처럼 scanf 를 쓸 수도 있다.
7. 15552번_빠른 A+B
#include <iostream>
using namespace std;
int main()
{
int T, i;
int a, b;
cin.tie(NULL);
ios::sync_with_stdio(false);
cin >> T;
for (i = 0; i < T; i++)
{
cin >> a >> b;
cout << a + b << '\n';
}
return 0;
}
- 출력 부분의 '\n' 을 endl 로 쓰면 시간초과
ios_base::sync_with_stdio(false);
cin.tie(NULL)
👆 이 두 옵션에 대해서는, 설명이 잘 된 링크가 있어서 링크로 대체
- snakehips.tistory.com/entry/C-15552-%EB%B9%A0%EB%A5%B8-AB
- stackoverflow.com/questions/31162367/significance-of-ios-basesync-with-stdiofalse-cin-tienull
[reference]
👇 알고리즘 공부 순서 추천
'공부기록 > C, C++' 카테고리의 다른 글
[C++] typedef 와 typename 그리고 중첩의존타입이름 (0) | 2021.04.18 |
---|---|
[BOJ] 기타 입출력 문제 C++ (0) | 2020.10.24 |
[C++] 포인터 대신 참조자(reference)를 써야하는 경우는 ? (0) | 2020.07.11 |
[C] 이중포인터의 선언, 할당, 참조 이해하기 (0) | 2020.06.12 |
C와 Python의 음수 나머지 연산 방법의 차이 (0) | 2020.04.24 |