목록스택 (22)
N
문제 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 있다. 문자열의 시작과 끝은 공백이 아니다. ''가 문자열에 있는 경우 번갈아가면서 등장하며, ''라면 태그가 닫히는 것이므로 check를 false, answer에는 '>'를 저장. 마지막으로 s[i]가 태그가 아니라면 스택에 저장해야 한다. 만약 check가 true이면 현재 태그이기 때문에 answer에는 단어 그대로 저장해주면 된다. false인 경우 단어에 해당한다. 만약 s[i]가 ' '라면 스택에 있는 단어를 뒤집어서 answer에 저장한다. 스택이 비워진 후 마지막에는 ..
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14_DEKAJcCFAYD&categoryId=AV14_DEKAJcCFAYD&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 스택을 이용한 문제. n 길이의 숫자를 받아오며, string 형태로 숫자를 저장한다. n개의 길이만큼 char형 stack s에 저장을 하는데 여기서 비밀번호를 만드는 과정을 적용한다. 1. s가 비어있지 않고 top과 i번째의 숫자가 같으면 pop(). 2. s가 비어있거나 top과 i번째의 숫자가 같지 않으면 push() 이를..

스택을 이용하여 풀면 쉽게 해결할 수 있다. s.size()만큼 반복문을 돌면서 스택에 넣어주자. 만약 스택이 비어있거나 스택의 top이 현재 s[i]와 같지 않다면 스택에 s[i] 문자를 넣어주자..! 하지만 스택의 top이 s[i]와 같다면 pop()을 해주어 같은 문자를 제거하면 된다. 반복문을 다 돌게 되었을 때, 스택이 비어있다면 모든 문자를 짝지어서 제거했기 때문에 1을 반환, 비어있지 않으면 문자가 남아있다는 뜻이므로 0을 반환하면 된다..! #include #include #include using namespace std; int solution(string s) { int answer = 0; stack stk; for(int i = 0; i < s.size(); i++) { if(st..

스택을 이용하여 올바른 괄호인지 판단하자..! #include 으로 하여 스택을 사용할 수 있게 하였다. 반복문을 s.size()만큼 돌면서 괄호를 스택에 넣어주도록 하였다. s[i] == '(' 이면 stk에 '('를 넣어준다. 만약 ')' 이라면 한번 더 조건을 검사해야한다. 현재 stk가 비어있지 않고, stk.top()이 '('라면 현재까지는 올바른 괄호이므로 stk.pop()을 해준다. 하지만 위 조건이 맞지 않는다면 그대로 ')'을 넣어준다. s.size()만큼 돌면서 스택에 넣어주고 빼는 동작을 반복한다. for문을 빠져나와 skt가 비어있는지 검사하자..! 만약 비어있으면 올바른 괄호이므로 true를 반환하고, 아니면 올바른 괄호가 아니므로 false를 반환한다..! #include #in..

우선 개발을 하는 데 걸리는 시간을 day 벡터에 넣어준다..! 예시대로 하면 day에는 {7, 3, 9}가 들어가게 된다. 그리고 while문으로 day가 빌 때까지 실행을 한다. 맨 앞에 있는 시간을 current에 저장해 두고, int형 ind를 선언한다. ind는 current보다 큰 수를 만날때까지 ind++을 해준다. 큰 수를 만나면 break를 하여 for문을 빠져나간 후, day 벡터의 처음부터 ind까지 지워버린다. 그리고 ind를 answer에 넣어주면 배포의 개수를 알 수 있다..! #include #include #include using namespace std; vector solution(vector progresses, vector speeds) { vector answer,..

해당 인덱스의 가격이 떨어지지 않은 기간을 세어주면 된다..! 프로그래머스에는 스택/큐로 구분이 되어있지만, 간단하게 for문으로 풀 수 있다고 생각을 하였다..! 이중 for문으로 i는 현재 가격의 위치, j는 i + 1로 시간을 세려고 하는 위치를 나타낸다. sec는 시간을 나타내고, 두번째 for문을 돌 때마다 sec++ 해준다. 그리고 prices[i]보다 prices[j]가 크면 break 해주고 탈출한다. 마지막에는 answer에 push 해주면 끝..! #include #include using namespace std; vector solution(vector prices) { vector answer; for(int i = 0; i < prices.size(); i++) { int sec..