문제 : https://www.acmicpc.net/problem/6549 풀이 스택을 이용하여 풀었다. 기본적인 원리는 idx:0부터 순회하며 stack에 집어넣는다 만약, stack의 top의 height보다 클경우 push height보다 작거나 같을경우 아래의 과정을 거쳐 pop되고 push 진행 입력으로 "7 2 1 4 5 1 3 3"이 들어온다고 가정할 때, 들어오는대로 (idx,height)형태로 스택에 집어넣는다. idx :0일때, height=2는 스택이 비어있으므로 push 이면서 li[i]보다 등장횟수가 많으면서 가장 작은 j를 뜻한다. 즉, 수열li에서 li[i]보다 오른쪽에 있으면서 li[i]보다 등장횟수가 큰 수열값을 찾는것이 관건이다. ex) li=[1,1,2,3,4,2,1] 일때, 등장횟수는 F(1)=3, F(2)=2, F(3)=1, F(4)=1 오등큰수는 NGF(0)=li[0]인 1보다 많이 등장한 값은 없으므로 -1 NGF(1)= 동일 NGF(2)= li[2]인 2보다 많이 등장한 값은 1밖에 없으므로 1 NGF(3)= li[3]인 3보다 많이 등장한 값은 1, 2인데 2가 오른편에 있으면서 가장 가까우므로 2 NGF(4)= li[4]인 4는 위의 NGF(3)과 동일, 2 NGF(5)= li[5]인 2보다 많이 등장한 값은 오른쪽에서 1밖에 없으므로 1 NGF(6)= li[
문제 : https://www.acmicpc.net/problem/9935 풀이 stack을 이용해 해결하는 문제이다..! 처음엔 단순하게 폭탄문자열을 replace함수를 이용해 지워주는 방향으로 진행했는데 당연하게도 시간초과가 뜬다 _ex) aaaaaaaaaaaaa..... bbbbbbbbb ab 입력일 경우, 시간복잡도가 굉장해진다.._ 그러므로 시간복잡도를 줄이기 위해 stack을 이용한다. 문자열 S의 idx=0부터 stack에 쌓는다 만약, stack의 마지막 문자가 폭탄문자열의 마지막 문자와 같을경우 stack을 폭탄문자열 길이만큼 끝부분을 슬라이싱 한 결과가 폭탄문자열과 같을경우 그 길이만큼 stack에서 pop!