목록Language (35)
습관처럼
여러 알고리즘 문제를 풀때 1차원 배열에서 시계 방향, 반시계 방향으로 회전을 시켜야 하는 경우가 존재합니다. 이때 정말 쉽고 편리하게 사용할 수 있는 방법을 알려드리도록 하겠습니다. 먼저 Algorithm 헤더의 rotate에 대해 잘 모르시다면 아래 링크를 통해 rotate에 대해 보고오시면 쉽게 이해할수 있습니다. 참고: 2020/04/13 - [Language/C++] - C++ - Algorithm 헤더 파일 reverse(), rotate(), random_shuffle() 관련 문제 : 2020/04/30 - [Algorithms/BOJ] - 백준 14891 - 톱니바퀴 시계를 예로 들어보도록 하겠습니다~. 1시부터 12까지 숫자가 존재한다고 가정하겠습니다. #include #inlcude ..
[n x n 2차원 배열에 대한 조작 (90도 회전 / 점대칭 / 선대칭)] (i, j) : i 행, j 열 이라고 가정. (1) 90도 조작 (i, j) => (j, n - i - 1) (2) x축 대칭 (i, j) => (n - i - 1, j) (3) y축 대칭 (i, j) => (i, n - j - 1) (4) 점대칭 (i, j) => (n - i - 1, n - j - 1) void turn(){ int tmp_arr[20][20]; // 임시로 배열을 생성하여 이곳에 원본을 조작한 배열을 기록해 for(int i = 0; i < n; i++) for(int j = 0; j < n; j++){ tmp_arr[n - i - 1][j] = arr[i][j]; // x축 대칭 tmp_arr[i][n ..
이번에는 모든 분들이 다 아시는 sort를 제외한 다른 sorting 함수와 lower(OR upper)_bound()를 알아보도록 하겠습니다. [binary_search(arr_begin,arr_end,find_value) : 검색해주는 함수로서 찾는 값이 존재하면 True, 아니면 False를 리턴한다.] 이진 탐색(binary search)를 사용하는데, 정렬이 되어 있다는 가정하에 값을 빨리 찾고 싶을 때 사용합니다. arr_begin - 시작 arr_end - 끝 find_value - 찾고자 하는 값 [1 4 5 7 8 11 12 12 16 21 35] 11개의 값이 있다고 가정하자, 만약 여기서 21이라는 값을 찾고 싶다면, 어떻게 할까? 반복문을 사용해서 처음부터 끝까지 비교를 해 보면 됩..
[replace(arr_begin ,arr_end ,replace_before_value ,replace_after_value) : 특정한 값을 다른 값으로 대체.] arr_begin ,arr_end - 구간의 시작점과 끝점 replace_before_value - 대체할 값 replace_after_value - 결과값 #include #include using namespace std; int main(){ int a[10] = {1, 3, 2, 4, 5, 2, 4, 2, 8, 6}; int b[10]; copy(a, a+10, b); replace(a, a+10, 2, 7); replace(b+3, b+8, 2, 7); cout
이번에는 구간에 대한 함수들입니다. 역시 함수 이름을 참 잘 지어놔서, 이름으로 기능을 추론하기 쉽습니다. [reverse(arr_begin,arr_end) : 주어진 구간을 뒤집습니다.] #include #include using namespace std; int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {6, 7, 8, 9, 10}; reverse(a, a+5); reverse(b+1, b+4); cout
이 글 중 4개 중 3개가 배열 관련 함수입니다~ 당연히 벡터 등 다른 리스트 클래스에도 작동됩니다. [swap() : 매개변수 2개의 값을 바꾸는 것] #include #include using namespace std; int main(){ int a = 3, b = 5; cout
이번에는 vector 초기화에 대해서 알아보도록 하겠습니다.~ 바로 fill을 이용한 초기화를 진행하면 간단히 vector를 초기화 가능합니다. #include #include #include using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); vector mat(5, vector(5)); fill(mat.begin(), mat.end(), vector(5, 5)); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { cout
[char To ASCII] char ch1 = '1'; int numAscii = (int)ch1; cout > stoi string to float >> stof string to long >> stol string to double >> stod [int To string] to_string()함수 사용. to_string(int) int intValue = 5; string str = to_string(intValue); [char To string] char str[10] = "34"; int intValue = atoi(str); ***char로 설정한다면 c_str()를 붙이지 않아도 된다. ,하지만 string으로 설정한다면 c_str()를 붙여야 한다 붙이지 않으려면 char가 아닌 St..