0. 시작하기
컴퓨터 알고리즘 문제를 해결하기 위해서는 가장 먼저 프로그램 언어를 하나 이상 다룰 줄 알아야 한다. 깊게 알아야 필요는 없고 배열사용/조건문/반복문/함수사용 4가지 정도만 할 줄 알면 대부분의 알고리즘을 작성할 수 있다. Baekjoon 사이트는 거의 모든 언어를 지원하지만 그래도 대중적인 언어(C/C++, JAVA, Python) 중에 고르는 것이 여러모로 편리하다. 이 풀이는 C++ 로 작성되어있다.
1. 수의 입출력과 연산
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << "a + b = " << a + b << "\n";
cout << "a * b = " << a * b << "\n";
cout << "a - b = " << a - b << "\n";
cout << "a / b = " << a / b << "\n";
cout << "a % b = " << a % b << "\n";
return 0;
}int 형 변수 a 와 b를 입력받아 사칙연산한 결과를 출력하는 예제이다.
위 예제와 동일하게 double 형 변수나 float형 변수도 입력과 사칙연산을 진행할 수 있다.
여러 계산을 동시에 진행할 경우, 계산의 순서는 수학과 동일하다.
2. 문자열의 입출력과 연산
#include <iostream>
#include <string>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
cout << "a + b = " << a + b << "\n";
return 0;
}string형 변수들은 덧셈연산만 가능하며 두 문자열을 이어붙힌 결과가 나온다.
C++ 에서는 string 이라는 문자열 클래스를 지원한다.
3. 산술 연산자
| 연산자 | 의미 |
|---|---|
| a + b | a 와 b를 더한다 |
| a * b | a 와 b를 곱한다 |
| a - b | a 에서 b를 뺀다 |
| a / b | a 를 b로 나눈다 |
| a % b | a 를 b로 나눈 나머지 |
| a++1 | 해당 구문이 끝난 뒤, a에 1을 더한다 |
| ++a2 | 해당 구문이 시작할 때 a에 1을 더한다 |
| a—1 | 해당 구문이 끝난 뒤, a에서 1을 뺀다 |
| —a2 | 해당 구문이 시작할 때 a에서 1을 뺀다 |
4. 비트 연산자
비트 연산은 변수를 2진수로 변환시켜 각 자릿수별로 적용되는 연산을 의미한다.
| 연산자 | 의미 |
|---|---|
| a ^ b | a xor b |
| a | b | a or b |
| a & b | a and b |
| ~a | not a |
| a << b | a 를 b 횟수만큼 왼쪽으로 Shift 연산 |
| a >> b | a 를 b 횟수만큼 오른쪽으로 Shift 연산 |
| Shift 연산이란 말 그대로 이진수를 해당 방향으로 밀어버리는 연산을 의미한다. | |
예시로 5 << 2는 이 된다. 반대로 5 >> 2는 이 된다. | |
단순하게 표현하면 a << b 는 이고 a >> b는 `다. |
4. 개행 문자
콘솔 입출력에서 개행을 출력하고 싶다면 \n을 출력하면 된다.