본문 바로가기

PS78

[백준] 6549. 히스토그램에서 가장 큰 직사각형(c++) https://www.acmicpc.net/problem/6549 키가 되었던 아이디어는 시작점을 바꿔주는 것이었다. 현재 입력값이 stack.top()보다 작을 때 쌓아왔던 큰 값들의 넓이 최댓값들을 검증해준다. 시작점을 바꿔주는 이유는 stack.top에 있는 값이 자기 자신보다 크니 후에 flush 할 때 곱해줄 수 있게 start_idx를 stack.top의 index를 것으로 최신화 시키는 것이다.  입력값을 다 받은 후 flush도 잊지 말고 해주자. int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); while (1) { int n; cin >> n; if (n == 0) .. 2025. 2. 4.
[백준] 17298. 오큰수(c++) https://www.acmicpc.net/problem/17298초기화를 -1로 해주었다.가변배열로 받으니 시간이 많이 소모되었다.. 입력값이 stk.top보다 큰 값이 나왔을 때 stack에 있는 인덱스와 입력값을 대입해주면 된다.역시 코테에서는 fill_n을 써야할지 싶다.memset은 unsigned char로 두번째 인자로 받아주기 때문에 0 또는 null로만 받아주는 것이 좋다. 안그러면 쓰레기값을 경험할 수 있다..   #include#include #include #include #include #include #include #include #include #include #include #include using namespace std;int main() { ios::sync_w.. 2025. 2. 3.
[백준] 6198. 옥상 정원 꾸미기(c++) https://www.acmicpc.net/problem/6198같거나 큰 빌딩이 있으면 그다음에 있는 모든 빌딩의 수를 못본다.이번에 stk의 두번째 값에는 인덱스를 넣어서 계산 시 현재 i와 stk.top.second의 값을 계산해서 넣어주는 것이 핵심이었던 것 같다.마지막으로 stack에 있는 값을 flush해주는 반복문까지 해주면 끝이다. #include#include #include #include #include #include #include #include #include #include #include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); i.. 2025. 2. 3.
[백준] 2493. 탑(c++) https://www.acmicpc.net/problem/2493시작 지점을 stack에 같이 저장하는 것이 관건이었던 문제였다.스택의 첫번째값에 큰 수를 넣어 0부터 check 할 수 있도록 하였다. #include#include #include #include #include #include #include #include #include #include #include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; // 입력값 받을 배열 int arr[500002]; // 정답 배열 int answer[500002] = {0};.. 2025. 2. 3.
[백준] 3015. 오아시스 재결합(c++) https://www.acmicpc.net/problem/3015처음에 조합으로 가능한지?로 접근하였다가 전혀 풀리지 않아서 풀이를 보고 풀었다;;(출처: https://everenew.tistory.com/89) 관건은 같은 값 처리 문제였다.풀이 상에서의 포인트는 다음 둘과 같았다.1. stack에 같은 키를 가진 값의 쌍의 수를 저장하는 것2. 입력값과 stk.top의 키가 같을 때 어찌 처리 할 것인가. 주석 상에 이해한 바와 흐름을 적어놓아 봤다. #include#include #include #include #include #include #include #include #include #include #include #include using namespace std;int main() { .. 2025. 2. 2.
[백준] 6198. 옥상정원 꾸미기(c++) https://www.acmicpc.net/problem/6198애먹어서 바로 리뷰한다..입력값의 범위를 제대로 보지 않고 987654321를 최댓값으로 넣었다가 혼쭐이 났다. (경계값 분석이 역시나 중요하구나)추가적으로 이전 코테 문제(https://www.acmicpc.net/problem/2493)에서 +된 부분은 마지막에 flush 해줘야 하는 부분이 달랐다. #include#include #include #include #include #include #include #include #include #include #include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); cout... 2025. 1. 31.