https://www.acmicpc.net/problem/11656
##문제 풀기 전 알아야 할 개념 :
- Iterator을 이용하여, String 객체의 원소를 조작하기 : erase()메소드
erase()메소드 :
ⓐ. String클래스의 인스턴스 메소드 => 호출법 : String 객체.erase()
ⓑ. 매개변수 : iterator의 String 객체의 포인터 : (or 객체 포인터 2개를 넣으면, 범위만큼 조작 가능)
ex_ String 객체인 word의 인덱스 4번째 원소를 지우기 => word.erase(word.begin() + 4);
ⓒ. 반환값 : void
- C++ 에서 sort()메소드 vs qsort()메소드 차이 :
1_ Sort()
ⓐ. 헤더파일 : <algorithm>
ⓑ. 호환성과 성능 : C++ 컨테이너와 많이 호환 , O(Nlog(N))으로 시간복잡도 성능도 좋은=ㅁ
ⓒ. 매개변수 : vector(or deque)의 첫 포인터 , vector(or deque)의 마지막 포인터, (람다식함수) :
ⓓ. 람다식 함수 사용 vs 안사용 :
- 기본 함수 : operator < :
- 람다식 함수 : vector의 원소 자료형을 int라 한다면, [] (int a, int b ) { return a op b}
ex_
2_ qsort() :
ⓐ. 헤더파일 : <cstdlib> => 이말은 즉, C++이 아닌 C언어의 헤더파일이라는 의미 (구식이라는 뜻)
ⓑ. 호환성과 성능 : C++ 컨테이너 호한 x (즉, 배열로 사용 [이것도 구식]) , 시간 복잡도는 Sort()가 더 좋다.
ⓒ. 매개변수 : vector(or deque)의 첫 포인터 , vector(or deque)의 마지막 포인터, (람다식함수) :
ⓓ. 단점 : const void* 포인터를 사용하기 때문에 -> ★sort보다 안정성이 떨어진다.
ex_
결론 : C++로 백준 정렬 문제 풀 때, 앞으로 qsort()가 아닌 sort()로 풀자
##노트 정리 :
##코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void init() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
int main() {
init();
vector <int> V = { 1,2,3,4,5 };
sort(V.begin(), V.end(), [](int a, int b){
return a < b;
});
//1 2 3 4 5?
for (int i = 0; i < V.size(); i++) {
cout << V[i] << ' ';
}
cout << '\n';
return 0;
}
|
cs |
'백준(C++) > 자료구조1' 카테고리의 다른 글
[BOJ/C++]10820번_문자열 분석 (0) | 2024.07.19 |
---|---|
[BOJ/C++]1918번_후위 표기식(중위표기->후위표기변환)(작성중..) (0) | 2024.07.19 |
[BOJ/C++]1935번_후위 표기식2_풀이2 (0) | 2024.07.18 |
[BOJ/C언어]1935번_후위 표기식2 (0) | 2024.07.18 |
[BOJ/C++]17299_오등큰수(작성중) (2) | 2024.07.17 |