- lower_bound와 upper_bound
- 시계방향과 반시계방향 회전
- 배열의 합(accumulate), 배열 중 가장 큰 요소(max_element), 배열 부분 회전
- 함수인자로 전달해서 변수 수정하기
- n진법 변환
- 내림차순 정렬 & 커스텀 정렬
- 2차원 배열을 회전하는 함수
lower_bound(a.begin(), a.end(), 4) - a.begin()
은 3을 반환(5를 가르키는 인덱스)cout << upper_bound(v.begin(), v.end(), 6) - v.begin() << endl; // 4(7을 가르킴)
cout << lower_bound(v.begin(), v.end(), 6) - v.begin() << endl; // 4(7을 가르킴)
cout << upper_bound(v.begin(), v.end(), 9) - v.begin() << endl; // 5
cout << lower_bound(v.begin(), v.end(), 9) - v.begin() << endl; // 5
cout << upper_bound(v.begin(), v.end(), 0) - v.begin() << endl; // 0
cout << lower_bound(v.begin(), v.end(), 0) - v.begin() << endl; // 0
rotate(v.begin(), v.begin() + v.size() - 1, v.end()); // 시계 방향
rotate(v.begin(), v.begin() + 1, v.end()); // 반시계 방향
accumulate(v.begin(), v.end(), 0);
max_element(v.begin(), v.end());
int temp = v[i];
v[i] = v[i + 1];
v[i + 1] = v[i + 2];
v[i + 2] = v[i + 3];
v[i + 3] = temp;
(1) void ch1(int %a) a = 2;
ch1(a)로 함수 호출
(2) void ch2(int *a) *a = 3;
ch1(&a)로 함수 호출
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int main(){
int n = 100;
int b = 2; // 바꿀 진법
while(n > 1){
v.push_back(n % b);
n /= b;
}
if(n==1) v.push_back(1);
reverse(v.begin(), v.end());
for(int a : v){
if(a >= 10)
cout << char(a + 55);
else
cout << a;
}
return 0;
}
sort(v.begin(), v.end(), greater<int>());
sort(v.begin(), v.end(), greater<pair<int, int>>());
sort(v.begin(), v.end(), cmp);
// 왼쪽으로 90도
void rotate90(vector<vector<int>> &key){
int m = key.size();
vector<vector<int>> temp(m, vector<int>(m, 0));
for(int i = 0; i < m; i++){
for(int j = 0; j < m; j++){
temp[i][j] = key[j][m - i - 1];
}
}
key = temp;
return;
}
// 오른쪽으로 90도
void rotate90(vector<vector<int>> &key){
int m = key.size();
vector<vector<int>> temp(m, vector<int>(m, 0));
for(int i = 0; i < m; i++){
for(int j = 0; j < m; j++){
temp[i][j] = key[m - j - 1][i];
}
}
key = temp;
return;
}
이 글은 큰돌님의 '10주완성 C++코딩테스트 | 알고리즘 IT취업'을 수강하고 정리한 내용입니다.