[C++] 백준 1406번: 에디터
·
problem solving/백준
문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 풀이 최근에 stack문제만 모아서 푸니까 그냥 ktx타고 봐도 스택 문제였다... 배열로 풀다가 인덱스 쫌쫌따리 따라가기 귀찮아서 라이브러리를 이용해서 풀어주었다! 소스 HTML 삽입 미리보기할 수 없는 소스
[C++] 백준 5397번: 키로거
·
problem solving/백준
문제 https://www.acmicpc.net/problem/5397 풀이 커서를 기준으로 컨테이너를 두개로 나눠서 >, > T; while(T--) { std::string code; std::cin >> code; std::stack c1, c2; char temp; char c; for(int i=0; i
[C++] 백준 2841번: 외계인의 기타 연주
·
problem solving/백준
문제 https://www.acmicpc.net/problem/2841 풀이 2차원 배열로 풀어도 되지만 top index를 데리고 다니기 싫어서 stack으로 풀었다. 지금 누르고 있는 줄의 프렛을 저장하는 변수를 생성했다 자료구조를 시각화 하면 대충 아래처럼 생각하면 된다 stack[줄] = [프렛 | 프렛 | ... ] 누르려는 음 stack[줄]의 가장 높은 프렛 누르려는 음을 하나 더 누르면 된다. + 스택이 비었는지 체크하는 부분을 쉽게 처리 하는 방법을 알았다. https://ryute.tist..
[C++] 백준 2304번: 창고 다각형
·
problem solving/백준
문제 https://www.acmicpc.net/problem/2304 Olympiad > 한국정보올림피아드 > KOI 2005 > 초등부 2번 초등부문제라는 게 날 자극한다.. 풀이 웅덩이가 없으려면 5 2 6 처럼 높은 곳에서 아래로 내려갔다가 다시 올라가면 안된다는 조건이 있어야 한다. 높이의 max를 구해 반으로 가르고 -> , > N; for(int i =0; i> L >> H; pillars[L] = H; if(pillars[L] > pillars[max]) max = L; if(left > L) left = L; if(right max int height = pillars[left], pos = left; for(int i = left+1; i = ..
[C++] 백준 3986번: 좋은 단어
·
problem solving/백준
문제 https://www.acmicpc.net/problem/3986 풀이 가장 어려운 것이 문제 이해였다. 소스 #include #include #include int main() { int N = 0, result = 0; std::string word; std::cin >> N; for(int i=0; i> word; for(auto& c : word) { if(!stk.empty() && stk.top() == c) stk.pop(); else stk.push(c); } if(stk.empty()) ++result; } std::cout
[C++] 백준 3078번: 좋은 친구
·
problem solving/백준
문제 https://www.acmicpc.net/problem/3078 풀이 이걸 큐로 풀 수 있다는 걸 알고 상상이 1도 안 되서 검색해서 봤다. (이제 내껄로 만들면 아무튼 성장한거임ㅇㅈㅇㅈ 피타고라스도 학교 다니고 교과서 보고 풀이도 봄;) 너무 똑똑함.. 어떻게 이런 생각을 했지.. 이제 이 지식은 제껍니다. 주의할 점은 output의 타입을 long long으로 지정해야 한다. 소스 #include #include #include int main() { int N = 0, K =0; long long result = 0; std::queue students[21]; std::string name; std::cin >> N >> K; for(int i=0; i> name; while(!studen..
[C++] 백준 5430번: AC
·
problem solving/백준
문제 https://www.acmicpc.net/problem/5430 풀이 input output 1 R 1 [1] [1] 1 D 1 [1] [] 1 DDDD 4 [1,2,3,4] [] 1 R 0 [] [] 위 반례도 잘 돌아가는지 꼭 체크하기! 소스 HTML 삽입 미리보기할 수 없는 소스
[C++] 백준 1935번: 후기 표기식2
·
problem solving/백준
문제 https://www.acmicpc.net/problem/1935 풀이 스택으로 풀었다. calcultor() 안에 a와 b 연산 순서 확인 AA+A-라고 낼수도 있으니까 A 문자열이 어떤 숫자를 대입해야하는지도 저장하고 있어야 한다. 소스 #include #include #include double calculator(double a, double b, char op) { if(op == '+') return a + b; else if(op == '-') return b - a; else if(op == '/') return b / a; else if(op == '*') return a * b; } int main() { int N = 0, result = 0; std::string str; do..
[C++] 백준 1918번: 후위 표기식
·
problem solving/백준
문제 https://www.acmicpc.net/problem/1918 풀이 스택을 이용해 푸는 문제라는걸 알고 있어서 쉽게 풀었다. 각 연산자마다 어떤 행동을 해야 하는지 조건문을 잘 걸어줘야 한다 . 연산자의 우선순위는 아래와 같다. 1. *,/ 2. +,- 3. ), ( 소스 #include #include #include int main() { //input std::string input; std::cin >> input; //solve std::stack op; std::string result; for (int i = 0; i = 'A' && input[i]
[C++] 백준 9012번: 괄호
·
problem solving/백준
문제 https://www.acmicpc.net/problem/9012 풀이 VPS의 조건을 생각해 보았다 . ( 의 개수와 ) 개수가 같아야 한다. 마지막 문자가 반드시 ) 여야 한다. 어떤 경우도 )가 (보다 많을 수 없다. ((()))...는 세번째 문자열까지 ( 는 3개, )는 0개지만 VPS일 가능성이 있다. 하지만 )... 이나 (()))... 가 된다면 뒷 문자열을 볼 필요 없이 VPS가 아니다. 조건을 세운 후 간단한 정수로 (와 )를 적절히 카운팅하여 풀었다. count = 0로 셋팅한다. ( 일 때, count를 1씩 증가시킨다. )일 때, count를 1씩 감소시킨다. count가 0이 아니면 NO를 출력 시킨다. 소스 #include #include #include int main(..