전체 글
-
백준 - 17413 단어 뒤집기 2백준 algorithm 2020. 3. 2. 17:28
단어 뒤집기 1을 푼 방식대로 풀면 된다. 다른 점은 tag를 생각하고 풀어야한다는 점이다. 거꾸로 print하고 싶은 문자는 stack에 쌓은 후 차레대로 pop하면서 풀면 거꾸로 출력할 수 있다. 이 때 빈칸이 나오면 별개의 단어로 취급해야한다. ( tag안에 있는 단어는 해당되지 않는다. ) // // main.cpp // Baekjoon // // Created by 이준후 // Copyright © 2020 이준후. All rights reserved. // #include #include #include using namespace std; void WordReverse(string str) { int x=0; stack st; int size = str.size()-1; while(x
-
백준 1158 - 요세푸스 문제백준 algorithm 2020. 2. 26. 00:34
queue를 사용하여 풀 수 있다. 원하는 n번째가 나올때까지 pop, push를 이어가다 원하는 숫자가 나오면 프린트하고 pop을 하는 방식을 취하면 된다. 본인은 해당하는 값들을 vector에 넣어 print하였다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N, K; cin >> N>>K; queue jose; vector answer; for(int i=1;i
-
백준 1406 - 에디터백준 algorithm 2020. 2. 25. 21:56
stack을 사용하여 풀 수 있는 문제이다. stack 두 개를 사용하여 커서를 표현 할 수 있다. 커서는 언제나 leftStack과 rightStack 사이에 있다. L : leftStack.top을 rightStack으로 옮긴다. D: rightStack.top을 leftStack으로 옮긴다. B: leftStack.top을 삭제한다. P : leftStack에 해당하는 char를 추가한다. Print () : rightStack은 pop하는 순서대로 뽑아도 무방하다. 하지만 leftStack은 pop하는 반대 순서로 print해야 한다. 본인은 vector를 사용하여 간단하게 활용하였다. leftStack을 deque 를 사용하였다면 더 간단히 해결할 수 있을 듯 하다. #include #inclu..
-
백준 1874 - 스택 수열백준 algorithm 2020. 2. 21. 16:10
크게 두가지 경우를 나눈다. 1.stack이 빈 경우 2.stack이 비지 않은 경우 1.1 stack에 오름차순의 수를 넣어주고 answer에 +를 추가한다. 2.1 stack의 top == arr[index] ->stack pop ->answer에 -추가 2.2 stack의 top stack push ->answer에 +추가 2.3 stack의 top > arr[index] 불가, NO!!!! *index를 언제 증가시킬지에 대해 고민하고 써야한다. *stack이 빈 경웨 top()을 사용하면 error가 발생한다. if문으로 stack이 비지 않은 경우에만 사용하여야 한다. #include #include #include #include using namespace std..
-
백준 9012 - 괄호백준 algorithm 2020. 2. 21. 00:55
=>stack을 이용해 '('를 만나는 경우 push를 하고 ')'를 만나는 경우 pop을 하였다. =>괄호가 끝날 때 까지 해당 작업을 다 한 이후에 stack이 비어있으면 완전한 괄호(YES)이고, stack이 비어있지 않으면 불완전한 괄호(NO)이다. =>함수를 사용하여 true와 false값을 반환한다면 더 간단하게 풀 수 있다. =>본인은 함수를 생성하지 않고 하였다. =>stack이 비어있을 때 ')'를 만나는 경우 '('를 push하여 stack이 비지 않도록하여 예외처리를 하였다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout...
-
백준 9093 - 단어 뒤집기백준 algorithm 2020. 2. 20. 23:39
=>string을 cin으로 받을 경우 buffer에 값이 남으므로 getline함수를 사용해 입력받았다. => cin.clear(); cin.ignore(256, '\n'); 위의 두가지 함수를 사용하여 buffer를 지우고 getline을 실행하였다. => 우선적으로 string을 입력받은 후에 해당 string을 ' '(빈칸)이 나올 때 까지 나눠 char형 스택에 쌓았다. => 스택에 쌓인 char를 하나씩 프린트하면, 해당 단어의 거꾸로 출력이 완성된다. =>해당 줄이 끝날 때까지 과정을 계속한다. #include #include #include using namespace std; void printS(string s) { int x = 0; stack st; int size = s.size(..
-
백준 3009 - 네 번째 점백준 algorithm 2020. 2. 16. 14:55
x와 y축에서 한번만 나온 숫자를 찾는 함수를 만들어 해결하였다. #include #include #include #include using namespace std; int find(int arr[]) { if(arr[0]==arr[1])return arr[2]; else if(arr[0]==arr[2])return arr[1]; else if(arr[1]==arr[2])return arr[0]; return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int X[3], Y[3]; for(int i=0; i>X[i]; cin>>Y[i]; } cout