자료구조 및 알고리즘(46)
-
[백준 12605] 단어순서 뒤집기
getline은 뭐하는 함수인가 공백 구분 받아서 출력하기 쓰기 1) 구분자가 있는 경우 split으로 잘라 vector 에 넣기 #include #include #include #include using namespace std; int main() { string str="java c c++ python"; istringstream ss(str); string stringBuffer; vector x; x.clear(); cout
2023.02.18 -
[백준 17608]막대기 문제 최댓값 갱신 원리 및 논리 파악하기!
자주 쓰이는 트릭 #include #include using namespace std; int main() { int max = 0, n, m, cnt = 0; stack s; cin >> n; for (int i = 0; i > m; s.push(m); } while (s.size()) { if (max < s.top()) // max=0으로 함으로써 꼬임없이 잘 할 수 있다. { // 따라서 첫번째는 무조건 cnt++ //그런데 이전 값보다 큰지 안큰지 비교하고 갱신해야한다. max = s.top(); cnt++; } s.pop(); } cout
2023.02.16 -
[바킹독 강의]스택 정리
스택 스택이란 한쪽 끝에서만 넣고 뺄 수 있는 자료구조 구조적으로 먼저 들어온 원소가 나중에 나오게 된다. 참고로 큐나 덱도 스택처럼 특정 위치에서만 원소를 넣거나 뺄 수 있는 제한이 걸려있습니다. 그래서 스택, 큐, 덱을 묶어서 Restricted Structure라고 부르기도 합니다. 스택은 특정 위치에서만 원소를 넣거나 뺄 수 있게 제한을 둔 대신에 원소의 추가와 제거가 모두 O(1)입니다. 나중에 구현을 같이 해보겠지만 우리가 배열의 끝에서 원소를 추가/제거할 때 시간복잡도가 O(1)이었던 것과 완전 상황이 똑같습니다. 그리고 제일 상단의 원소 확인 또한 O(1)입니다. 대신 스택에서는 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능합니다. -> 그렇지만 응용을 통해서 해당 기능이..
2023.02.15 -
백준 C++ 스킬) 문자열 비교하기
앞에 push라는 글자를 포함하는지 알고 싶으면 "push" 써서 비교하면 된다. 그런데 split이나 잘라서 하는거는? 나중에 알아보자! 10828번 스택 코드 발췌 #include #include using namespace std; stack dudtls; void push(int a) { dudtls.push(a); } void pop() { if (dudtls.empty() == 1) cout
2023.02.03