- int : 정수. %d
- char : ASCII로 바꿀 수 있는 하나의 글자(숫자랑 비슷) %c
- long int : %ld
- long long int : %lld
- float : 소수(부동 소수점 오차 커서 double 쓰는게 나음)
- double : 부동소수점 넉넉히 제공함. %lf
- long double : 부동소수점 더더욱 넉넉히 제공. %LF
- bool
- unsigned int : +- 할당하는 비트까지 숫자로 쓰고 싶을 때.
한 글자씩 받기
char tmp;
scanf(" %1c", tmp);
printf("숫자는 %d 문자는 %s", 10, "string")
JS랑 동일함.
and : &&
or : ||
int myInt = 3;
double myDouble = (double)myInt;
returnType func() {
printf("%d", true)
return returnType
}
char str[SIZE]
TYPE NAME[SIZE] = {1, 2, 3, 4, ... }
int arr[100]
struct a
{
int fieldX;
int fieldY;
}
struct a
{
int fieldX;
int fieldY;
} name, name2[10]
a myObject;
a.filedX = 1;
a.filedY = 1;
int a = 2;
if (1 == 1)
{
}
else if (a == 2)
{
}
else
{
}
// 짧게 쓰고싶다면
if (a == 1)
printf("catch");
for (int i = 0; i <= 10; i++)
{
// code
}
int i = 0;
for (; i <= 10;)
{
// code
i++
}
for (;;)
{
// code
if (i <= 10)
break;
}
int check = (a == 2) ? 100 : 200;
char func (int a, int b)
{
return '1';
}
int arr[100]
int arr[100][100]
int arr[100][100][100]
#include <vector>
#include <stdio.h>
using usespace std
vector<TYPE> NAME; // vector<TYPE> NAME(size, 초기값);
int main()
{
v.push_back(1); // push
v.emplace_back(2); // push_back보다 더 빠름.
v.resize(5); // size를 5로 지정;
v.resize(5, 0); // size를 5로 지정하고 0으로 초기화;
for (int i = 0; i < v.size(); i++)
{
printf()
}
for (int i : v) // for (let i of )
{
printf("%d ", i);
}
}
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
int N = 5;
pair<int, int> a = make_pair(2, 3); // 정석;
pair<int, int> b = {2, 3}; // 생성자;
a.first = 2, a.second = 3;
vector<pair<int, int>> v(100, {2, 3}); // 페어가 들어가는 벡터;
// 값 추가
v.push_back({2, 3});
v.emplace_back(2, 3); // push_back이 조금 더 빠름.
return 0;
}
// vector 안에 3개 이상의 값을 넣고 싶을 때
// 4가지 방법
// 1. vector
// 2. 구조체
// 3. pair<int, pair<int, int>> a;
// a.first, a.second.first, a.second.second;
// 4. tuple
tuple<int, int, int> tu = {1, 2, 3};
#include <tuple>
tuple<int, int, int> tu = {1, 2, 3};
// printf("%d", get<0>(tu));
auto [tu1, tu2, tu3] = tu; // pair 에서도 가능
#include <tuple>
#include <vector>
vector<tuple<int, int, int>> vtu(10, {1, 2, 3});
for (auto [t1, t2, t3] : vtu)
{
printf("%d %d %d\n", t1, t2, t3);
}
#include <stack>
using namespace std;
int main()
{
// stack
// 선언 : stack<TYPE> NAME;
stack<int> s;
// 값 넣기 : push, emplace
s.push(1);
s.emplace(3);
// 비어있는지 확인하는 방법
s.empty();
// bool 타입으로 반환
// 가장 위에 있는 값 확인하기 *주의 : stack이 비어있는데, 확인을 하면 에러가 납니다.
s.top();
printf("%d", s.top());
// 가장 위에 있는 값 뽑기 * stack이 비어있는데, 뽑으면 에러가 난다.
s.pop();
// stack 크기 확인
s.size(); // 반환 타입 unsigned int 0 ~ 21 * 2;
// clear
while (!s.empty()) s.pop();
}
#include <algorithm>
정렬 함수에선 true를 return하면 자리를 바꾸고 false를 return하면 자리르 바꾸지 아니한다.
#include <algorithm>
int arr[100];
for (int i = 0; i < 100; i++)
{
}
sort(arr, arr + 100); // sort(시작 포인터 주소, 끝나는 포인터 주소);
// 특정 조건에 따라 정렬하고자 한다면, 비교함수를 만들어주면 됨
bool cmp (int v1, int v2)
{
return v1 < v2; // 오름차순
// return v1 > v2; 내림차순
}
sort(arr, arr + 100, cmp);
struct user
{
int age;
char name;
};
bool cmp(const user &v1, const user &v2)
{
if (v1.age < v1.age)
return true;
else if (v1.age == v2.age)
return v1.name < v2.name;
return false;
}
user users[100];
for (int i = 0; i < 100; i++)
{
users[i].age = 1000 - i;
users[i].name = i;
}
sort(users, users + 100, cmp);
for (int i = 0; i < 100; i++)
{
printf("%d %c\n", users[i].age, users[i].name);
}
벡터의 포인터 값은 연속적이지 않음.
따라서 begin과 end 메서드를 이용해 포인터 값에 접근한다.
vector<int> v;
for (int i = 100; i > 0; i--)
v.emplace_back(i);
sort(v.begin(), v.end());
#include <stdio.h>
#include <algorithm>
#include <vector>
int main()
{
int N;
scanf("%d", &N);
vector<int> v(N);
for (int i = 0; i < N; i++)
{
scanf("%d", &v[i]);
}
vector<int> sorted_v = v;
sort(sorted_v.begin(), sorted_v.end()); // 벡터 정렬
// 벡터 중복 제거
sorted_v.erase(unique(sorted_v.begin(), sorted_v.end()), sorted_v.end());
// 벡터에 존재하는 값들 중에 indexOf처럼 가장 앞의 반복자를 return함.
// lower_bound는 반복자를 return하기 때문에 다시 해당 백터의 begin을 이용해 값을 빼줘야 index가 나온다.
for (int i = 0; i < N; i++)
{
printf("%d ", lower_bound(sorted_v.begin(), sorted_v.end(), v[i]) - sorted_v.begin());
}
return 0;
}
Queue : Queue, deque queue
Sort