전공

https://www.acmicpc.net/problem/1966 priority queue 문제이다 풀이 1(내 풀이) - 우선순위 큐 이용x PriorityQueue STL을 사용하지 않고 직접 구현하였다. 내 생각엔 STL을 사용하여 이보다 간단하게 풀이할 수 있는 방법이 있는 것 같다 디버깅이 중단점에 적중이 되지 않는 문제가 있었는데, 이를 F11 (Step Out) 키를 사용하여 해결하였다 아래 코드에선, priorityQueue 함수를 이용해 M 번째 인덱스의 출력시점의 횟수를 구한다 #include #include #include using namespace std; int priorityQueue(int n, int m) { int answer = 0;//출력 int wonder = m;..
예지 출력은 잘 나왔는데, 계속 '시간초과' 오류가 났다. '시간초과' 오류가 난 코드는 풀이1 이다. 풀이1(내 풀이) 풀이1에서 queue 의 rear와 front 정의, Dequeue() 함수의 정의를 내맘대로 바꾸었다. #include #include #include using namespace std; class Queue { public: int N; int K; int front, rear; int* data; // Removed initialization here public: Queue(int n, int k) { K = k; N = n + 1; front = rear = 0; data = new int[N]; // Initialize data array after setting N } ..
아래 내용들은 'c++로 쉽게 풀어쓴 자료구조 (천인국,최영규)' 책을 읽으며 개인적으로 공부하며 정리한 것입니다. 잘못된 점이 있으면 고치겠습니다. Chapter03 Queue (큐) Queue (큐) : 선입선출(FIFO : first in first out) 의 접근 방법을 유지하는 요소들의 모음 기능 enqueue(e) : 주어진 요소 e를 큐의 맨 위에 추가한다. dequeue() : 큐가 비어있지 않으면 맨 앞 요소를 삭제하고 반환한다 isEmpty() : 큐가 비어있으면 true를 아니면 false를 반환한다 peek() : 큐가 비어있지 않으면 맨 앞에 있는 요소를 삭제하지 않고 반환한다 ifFull() : 큐가 가득 차 있으면 true를 아니면 false를 반환한다 size() : 큐 내..
https://www.acmicpc.net/problem/1918 후위표기식 중위 표기법(infix notation) : 연산자가 피연산자들 사이에 위치 후위 표기법(postfix notation) : 연산자가 피연산자들 뒤에 위치 중위 표현식 -> 후위 표현식 현재 연산자보다 우선순위가 높거나 같은 연산자는 모두 출력한 후(ex. * > + ) 현재 연산자를 스택에 넣는다. ** 괄호를 포함한 중위 표현식 -> 후위 표현식의 경우 왼쪽 괄호 ( 는 우선순위가 가장 낮은 연산자, 왼쪽 괄호 ( 와 오른쪽 괄호 ) 가 만나면 없어짐 풀이1 (내풀이) 세부적으로 케이스를 나눠야하는데 까다로움. (결국 인터넷 참고해서 작성함 https://charles098.tistory.com/10) 피연산자는 순서대로 출..
https://www.acmicpc.net/problem/3986 지난 2-2 학기에 컴퓨테이션에서 pushdown 오토마타를 배워서인지 이 문제는 구현 아이디어를 떠올리기 쉬웠다. 풀이1(내풀이) 간단하다. pushdown automata 의 header 역할을 for문의 i 가 하고, 적용 아이디어 이미지 그대로 코드에 옮겼다 #include #include using namespace std; int main() { int n; int count = 0; cin >> n; while (n--) { string s; stack st; cin >> s; for (int i = 0; i < s.length(); i++) { if (st.size() == 0 || st.top() != s[i]) st.pu..
와 너무 힘들었다... 스택을 활용하는 건 알겠는데, 시간이 너무 오래 걸려 인터넷에서 힌트를 얻을 수 밖에 없었다. 이 힌트를 보고 코드를 작성했다. 풀이1 (내풀이) 레이저 () 인 경우 / ( ( 인 경우 / ) ) 인 경우 3가지 케이스로 나누어 작성하였다 레이저 () 인 경우 : stack에 담긴 ( 의 개수만큼 allCount(총 막대 개수) 에 더했다 ( ( 인 경우 : stack에 ( push ) ) 인 경우 : allCount에 1 추가후, stack의 ( 1개 pop #include #include #include #include using namespace std; int main() { cin.tie(NULL); ios_base::sync_with_stdio(false); vecto..
전형적인 스택 문제인 괄호 문자열 판별 풀이1(내 풀이) c++ 의 STL 을 사용하여 풀었다. 스택에서 pop을 할때는 해당 스택이 비어있는지 확인하는 것이 중요하다 - 이것땜에 처음에 오류남 #include #include #include #include using namespace std; bool isVPS(string & s) { stack ch; bool valid = true; for (int i = 0; i < s.length(); i++) { if (s[i] == '(') ch.push('('); else if (s[i] == ')') { if (!ch.empty()) ch.pop(); else valid = false; } else valid = false; } if (ch.size()..
풀이1 (내풀이) 공백 포함 문자열을 입력받기 위해서 getline(cin,s ,"\n") 함수를 사용하였다. 입력을 한번에 받고 한번에 출력하기 위해 Stack 클래스 내에 멤버로 string s를 설정하였다. #include #include #include #include using namespace std; class Stack { int to; int data[10000]; //출력 string s; public: Stack() { to = -1; } ~Stack() {} void empty() { if (to == -1) s += "1\n"; else s += "0\n"; } int isFull() { return to == 9999; } void push(int e) { if (isFull()..
코딩신생아(0o0)
'전공' 카테고리의 글 목록 (2 Page)