본문 바로가기

스택10

[백준/C,C++] 1406번: 에디터 www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 풀이 리스트를 통해 구현할 수 있는 문제입니다. 처음에 단순히 string 배열을 통해 구현했었는데 문자열이 복사되는 과정에서 시간을 많이 잡아먹어 시간 초과가 났었습니다. #include #include using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string s; int .. 2021. 4. 21.
[백준/C,C++] 2812번: 크게 만들기 www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 스택을 이용해 풀 수 있는 문제입니다. 219879가 입력되었고, 지워야 할 숫자가 3개라고 생각해봅시다. 먼저 첫 번째 자릿수인 2를 스택에 push 합니다. 이후부터 각 자릿수를 탐색하며 스택에 push 되어있는 숫자를 비교합니다. 만약 탐색 중인 자릿수의 숫자가 스택에 push 되어있는 숫자보다 크다면 스택의 숫자를 pop 해주며 k를 감소 시켜 줍니다. 즉 현재 지워야 할 숫자가 남아있고, 이전 자릿수들의 숫자가 현재 자릿수의 숫자보다 작다면 지워주는 것입니다. 219879의.. 2021. 4. 20.
[백준/C,C++] 10799번: 쇠막대기 www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 풀이 입력으로 3가지의 경우가 입력될 수 있습니다. 1. 쇠막대기가 시작되는 부분 '(' 2. 쇠막대기가 끝나는 부분 ')' 3. 레이저 "()" 레이저가 쇠막대기를 절단할 때 생기는 쇠막대기의 개수는 현재 쇠막대기가 몇 개 깔려있냐에 따라 다릅니다. 그림에서 처음 레이저를 발사할 때 총 3개의 쇠막대기가 깔려 있습니다. '('가 3번 입력된 거죠. 그다음 레이저를 발사할 때도 동일하게 3개입니다. 그리고 쇠막대기가 끝나.. 2021. 4. 20.
[백준/C,C++] 6549번: 히스토그램에서 가장 큰 직사각형 www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net hackids.tistory.com/59 [알고스팟/C,C++] FENCE: 울타리 잘라내기 www.algospot.com/judge/problem/read/FENCE algospot.com :: FENCE 울타리 잘라내기 문제 정보 문제 너비가 같은 N개의 나무 판자를 붙여 세운 울타리가 있습니다. 시간이 지남에 따라 판자들이 부러지거나 망가.. hac.. 2021. 3. 28.