본문 바로가기

Coding Test/C++ 줍줍12

[C++ 줍줍] next_permutation과 순열/조합 1. header #include 2. 순열 next_permutation(v.begin(), v.end()) ex. v = {1, 2, 3, 4} (1) 입력 벡터가 다음 순열로 바뀌면서 true를 리턴 : v={1, 2, 4, 3}, true 리턴 (2) 마지막 순열까지 모두 바뀌었다면 false를 리턴 : v={4, 3, 2, 1}, false 리턴 따라서, (1)때문에 while문이 아닌 do-while문을 사용해야 하고 (처음 자신 포함하려고) (2)때문에 while문 조건문이 next_permutation이 된다. void permutation() { int arr[] = { 1, 2, 3, 4 }; do { for (int i = 0; i < 4; i++) { cout 2022. 9. 20.
[C++ 줍줍] 올림, 내림, 반올림 ▷ 문제 상황 1 숫자를 올림, 내림한 결과를 알고 싶다 ! ▶ 해결 방법 1 ceil( ), floor( ) 메소드를 이용 * 헤더 : #include int c1 = ceil(2.2); // c1 = 3 int f1 = floor(4.7); // f1 = 4 ▷ 문제 상황 2 숫자를 반올림한 결과를 알고 싶다 ! ▶ 해결 방법 2-1 floor( ) 메소드와 0.5 이용 * 헤더 : #include int f1 = floor(4.7 + 0.5); // f1 = floor(5.2) = 5 int f2 = floor(4.2 + 0.5); // f2 = floor(4.7) = 4 ▶ 해결 방법 2-2 round( ) 메소드이용 * C++ 11 부터 사용 가능 * 헤더 : #include int c1 = r.. 2022. 9. 5.
[C++ 줍줍] 문자열 자르기 : substr( ) ▷ 문제 상황 문자열에서 원하는 만큼만 잘라내서 사용하고 싶다 ! ▶ 해결 방법 substr( ) 메소드를 이용 # substr( ) 사용법 1. 시작 인덱스, 길이 string s1 = "Happy"; string s2 = s1.substr(1, 3); // s2 = "app"; 2. 시작 인덱스만 이용 : 그 위치부터 끝까지 string s1 = "Happy"; string s2 = s1.substr(1); // s2 = "appy"; 2022. 9. 5.
[알튜비튜 줍줍] sort 함수 정리 std::sort 1. parameter 배열의 시작 위치, 끝 위치 2. 정렬 기준 [default] 오름차순 [custom] sort 함수의 3rd 인자로 다양한 비교함수 cmp를 넣어주면, 그 함수 기준으로 정렬 가능 ※ 내림차순 : sort ( , , greater()) ※ cmp (int a, int b) ① a가 b의 앞에 와야 할 경우 true를 리턴하게끔 설계 bool cmp(int a, int b) { if(a > b) return true; // a >= b 하면 안됨 return false; } ② a와 b의 우선순위가 같으면 false 반환해야 함 ( false를 리턴하는 경우, swap 한다는 사실을 숙지하고 있자! ) ③ cmp의 인자로 STL이나 클래스 객체가 전달되는 경우, .. 2022. 9. 3.
[C++ 줍줍] 벡터를 이용한 집합 계산 : 합집합, 교집합, 차집합 벡터를 이용한 집합 계산을 위해서는 아래 사항들을 유의하며 미리 만들어진 set_###( ) 메소드를 사용하면 된다. ※ 유의 사항 1. #include 헤더 포함 필수 2. 사전에 집합 계산 결과를 담을 충분한 크기의 벡터를 준비해야 함 3. 반드시 정렬이 된 상태의 벡터를 이용해서 연산해야 함 ▷ 문제 상황 두 벡터의 합집합 결과를 알고 싶다 ! ▶ 해결 방법 set_union( ) 메소드를 이용 ※ set_union( ) vs. merge( ) set_union( ) merge( ) 중복 허용 X 중복 허용 O 합집합 개념 두 집합을 그대로 합치는 개념 ex ) #include #include using namespace std; int main() { return 0; } 2022. 7. 25.
[C++ 줍줍] string의 특정 값 제거하기 : index, 문자 기준 ▷ 문제 상황 1 string의 특정 인덱스 값을 제거하고 싶다! ▶ 해결 방법 erase( ) 메소드를 이용 ex ) #include #include using namespace std; int main() { string s = "HAPPY" // 첫 문자 삭제 s.erase(s.begin()); // 마지막 문자 삭제 s.erase(s.end()); // 'index = n'인 문자 삭제 s.erase(s.begin() + n); // 'index = a'부터 'index = b'까지 삭제 s.erase(s.begin() + a, s.begin() + b); // 'index = n'부터 k개 문자 삭제 s.erase(n, k); // 'index = n'부터 끝까지 전부 삭제 s.erase(n);.. 2022. 7. 5.
[C++ 줍줍] Map의 value에 여러 개의 값을 저장하기 ▷ 문제 상황 key와 value로 이루어진 Map에서 value에 여러개의 값을 저장하고 싶다! ▶ 해결 방법 value에 vector를 넣어줄 수 있다! 정의하는 형식 ) map map_of_vector; OR map map_of_vector; [참고자료] https://www.geeksforgeeks.org/map-of-vectors-in-c-stl-with-examples/ Map of Vectors in C++ STL with Examples - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming.. 2022. 7. 5.
[c++ 줍줍] vector 정리 1. Definition of Vector 1-1. Vector의 등장 배경 배열을 사용하려면 동적 할당을 해줘야 하는 C " 귀찮 " ex ) int *arr = malloc(sizeof(int) * size); // element의 type * size 만큼 동적 메모리 할당 free(arr); // 마지막에 동적 할당한 메모리를 해제시킴 1-2. Vector 란 ? C++의 STL(Standard Template Library)에 속한 container = 가변 size를 가진 배열 * element를 추가/삭제하면 자동으로 크기 조절됨 1-3. Size vs. Capacity Size Capacity vector에 현재 들어있는 element 개수 vector가 수용가능한 용량 (memory) 2.. 2022. 6. 14.
[c++ 줍줍] 대문자 <=> 소문자 ▷ 문제 상황 대문자 → 소문자 소문자 → 대문자 변환하기 ▶ 해결 방법 1 아스키 코드 숫자값 이용하기 대문자(A)와 소문자(a) 차이값 1st 알파벳(A) 와 last 알파벳(Z) 차이값 32 25 char small = s[i] - 32; // 대 -> 소 char large = s[i] + 32; // 소 -> 대 ▶ 해결 방법 2 이미 만들어져 있는 메소드 이용 ( #include 필요 ) 대 → 소 소 → 대 tolower(대) = 소 toupper(소) = 대 char small = tolower(s[i]); // 대 -> 소 char large = toupper(s[i]); // 소 -> 대 2022. 5. 30.