본문 바로가기

algorithm

(69)
백준 2493번 탑 아이디어:1. 높이와 위치(인덱스)를 기록하는 스택을 두 개 사용2. 입력된 높이와 스택 top의 비교를 통해 스택의 내림차순 유지 #include #include using namespace std;// Answer Codeint main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N, tmp; stack> S; cin >> N; S.push({ 100000001, 0 }); for (int i = 1; i > tmp; while (tmp > S.top().first) S.pop(); cout  1. pair를 담는 스택 사용2. 스택에 {100000001, 0}을 담아 스택의 빈 경우 배제3. 들어온 입력에 대해 스택 top 보다 작..
백준 10799번 쇠막대기 https://www.acmicpc.net/problem/10799 아이디어:1. 어떤 괄호가 레이저인지 구분하는 것이 중요하다.2. 레이저가 나오기 전 '('의 개수를 기록해놓는다.3. 레이저가 나온다면 전 '('의 개수만큼 더한다.4. 레이저가 아닌 ')'가 나온다면 쇠막대기의 마지막 부분으로 1을 더한다. #include #include using namespace std;int main() { int cnt = 0, ans = 0, ch, pch; while ((ch = getchar()) != '\n') { if (ch == '(') cnt++; else cnt--, ans += pch == '(' ? cnt : 1; pch = ch; } printf("%d", ans);} 정답해는 스택을..
백준 17413번 단어 뒤집기 2 https://www.acmicpc.net/problem/17413 아이디어:1. 문장의 각 문자에 대해 검사한다.2. 문자가 '3. 문자가 ''가 나올 때 까지 그대로 출력하며 반복자를 증가시킨다.4. 문자가 ' '인 경우, 스택을 모두 비우고 출력한 뒤 공백을 출력한다.5. 둘 다 아닐 경우, 스택에 문자를 넣는다.6. 반복문이 종료된 후, 스택을 비운다.#include #include using namespace std;void emptyStack(stack &s);// Answer Codeint main(){ stack stack; string str; getline(cin, str); for (int i = 0;i ') break; ..
백준 12789번 도키도키 간식드리미 https://www.acmicpc.net/problem/12789 아이디어:1. N번의 입력과 1개의 스택으로 끝낼 수 있다.2. pos는 대상 번호표 순서로 1부터 시작한다.3. 들어온 입력이 pos와 같으면 pos를 증가한다.4. 들어온 입력이 pos와 다르면 스택에 넣는다.5. 스택 top과 pos를 비교하여 같으면 pop하고 pos를 증가한다.6. 5의 과정을 while문으로 작성해서 pos에 해당하는 스택 top을 모두 pop한다. 입력받은 수(tmp)가 순서(pos)와 일치하면 PASS(pos++), 다르면 스택에서 대기(space.push(tmp))스택 top도 순서(pos)와 일치하면 PASS(pos++), 이걸 순서와 다를 때 까지 반복 참고 풀이: https://zzaekkii.tis..
백준 1935번 후위 표기식2, C++ 소수점 출력 https://www.acmicpc.net/problem/1935 아이디어:1. 각 알파벳에 대응하는 수를 26 크기의 double 형 배열로 입력받는다.2. string으로 후위 표기식을 입력받고, char 형 스택을 사용한다.3. 알파벳이 들어오면 스택에 삽입하고, 연산자가 들어오면 스택에서 값을 2개 꺼내서 계산한다.4. 마지막에 스택에 남은 값을 출력한다.5. 소수점 출력: fixed는 소수점을 고정해서 출력하겠다는 의미이고, precision()는 소수점 아래 자리수를 이야기하며 그 아래는 자동 반올림된다. cout  #include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);..