본문 바로가기

알고리즘(C++)

(28)
[백준] C++ 1966번 : 프린터 큐 풀이과정 내용 코드 코드1(정렬된 vector로 우선순위 나타냄) 더보기 #include #include #include #include #include using namespace std; int main() { int iCaseNum = 0; cin >> iCaseNum; for (int i = 0; i > iInputSize >> iTargetPos; for (int i = 0; i > iValue; q.pu..
[백준] C++ 10845번 : 큐 풀이과정 N개의 문자열을 입력받아 vector v에 저장한다. push의 경우 입력할 값이 주어지기 때문에 if문을 사용해서 입력을 한 번 더 받는다. v에 입력된 값에 맞게 명령을 수행한다. 코드 #include #include #include #include using namespace std; int main() { queue q; vector v; int iInputSize = 0; cin >> iInputSize; cin.ignore(); v.reserve(iInputSize); for (int i = 0; i > s; v.push_back(s); if (s == "push") { cin >> s; v.push_back(s); } ..
[백준] C++ 2504번 : 괄호의 값 풀이과정 1. 입력받은 문자가 '('나 '['면 스택에 push 한다. 결과값은 벡터에 저장한다. (벡터의0번째 = 최종 결과값, 그 외 = 곱셈연산 내부 결과값 저장) 2. ')'일 때, 스택의 top이 '['가 아닌 경우 아래를 수행한다. - 이전에 입력한 문자가 '('라면 "()"로 2의 값을 갖고, 스택에서 pop 한 후 결과(iResult)값에 2를 더한다. - 이전에 입력한 문자가 '('가 아니라면 '(X)'로 2*X값을 수행한다. * 스택의 사이즈가 0이라면 vector의 0번째에 2를 더한다. * 스택의 사이즈가 1이라면 곱셈 연산이 있으므로 벡터의 스택 사이즈 번째(v.at( st.size() ) )에 2를 곱한 후 v.at( st.size()-1 )에 저장한다. 위의 과정을 반복한 후 ..
[백준] C++ 1874번 : 스택 수열 풀이과정 첫 줄에 입력받은 N(iInput) 만큼 입력받아 벡터(v1)에 저장한다. 1부터 N까지 스택(st)에 push하면서 벡터(v1)의 처음 값부터 비교한다. 스택(st)의 top이 비교할 값과 같다면 스택(st)에서 pop해주고 다음 값을 비교한다. push할 때 '+', pop할 때 '-'를 벡터(v2)에 추가한다. 입력받은 값들이 스택으로 표현할 수 있다면 스택(st)은 empty 상태이므로 벡터(v2)의 값들을 출력해준다. 그렇지 않을 경우 "NO"를 출력한다. 코드 더보기 #include #include #include #include using namespace std; int main() { int iInput = 0, iNum = 0;; vector v; stack st; vector..
[백준] C++ 10799번 : 쇠막대기 풀이과정 입력받은 문자를 stack에 저장한다. 입력받은 문자가 ')'일 때, 직전에 입력받은 문자가 '('라면 레이저를 나타내고, ')'라면 막대기가 끝났음을 나타낸다. '(' 입력 -> stack에 추가 ')' 입력 : 1. 직전이 '(' (레이저) -> stack의 사이즈만큼 잘려진 조각 수 증가 2. 직전이 ')' (쇠막대기 끝남) -> 잘려진 조각 수 +1 증가 코드 더보기 #include #include #include using namespace std; int main() { string s = ""; stack st; int iCount = 0; cin >> s; for (int i = 0; i < s.length(); ++i) { if (s[i] == '(') st.push(s[i]);..
[백준] C++ 9012번 : 괄호 풀이과정 입력받은 문자열의 각 문자를 검사해서 '('일 때 push 하고, ')'일 때 스택의 맨 위의 값이 ')'일 때 pop 한다. 모든 문자 입력 후 스택이 비어있으면 YES를 비어잇지 않다면 NO를 출력한다. 코드 #include #include #include #include using namespace std; int main() { int iSize = 0; cin >> iSize; for (int i = 0; i > s; for (int j = 0; j < s.length(); ++j) { if (st.empty() || s[j] == '(') st.push(s[j]); else if (st.top() == '(') ..
[백준] C++ 10828번 : 스택 풀이과정 N개의 문자열을 입력받아 vector v에 저장한다. push의 경우 입력할 값이 주어지기 때문에 if문을 사용해서 입력을 한 번 더 받는다. v에 입력된 값에 맞게 명령을 수행한다. 코드 더보기 #include #include #include #include using namespace std; int main() { stack st; vector v; int iInputSize = 0; cin >> iInputSize; cin.ignore(); v.reserve(iInputSize); for (int i = 0; i > s; v.push_back(s); if (s == "push") { cin >> s; v.push_back(s..
[백준] C++ 1159번 : 농구 경기 풀이과정 선수의 수(N)를 입력받고, 선수들의 이름을 vector형 변수(v)에 입력받는다. 문자 a-z를 아스키코드를 저장할 수 있는 배열(iArr)을 만들고 0으로 초기화 한다. 저장된 선수이름의 첫번째 문자를 int형으로 형변환한 값을 인자로 갖는 변수에 +1을 한다. 배열에 저장된 값이 5이상인 배열의 index를 문자로 형변환하여 출력한다. 코드 #include #include #include using namespace std; int main() { int iArr[200] = { 0, }; int iInputSize = 0; bool bIsGiveUp = true; vector v; cin >> iInputSize; v.reserve(iInputSize); for (int i = 0; i ..