분류 전체보기 127

[C++]Stack 자료구조 - 기차운행

올바른 괄호 문제는 배열에 있는 값과 Stack의 Top자료를 비교했다면 이 문제는 출력값과 Stack의 Top자료를 비교한다. 출력값에 규칙성이 있다면(정렬된 값) 이를 이용하여 출력값과 Top자료가 동일할 때 POP하는 방식으로 구현한다. #include #include #include #include using namespace std; int main() { int N,i,j=1; scanf("%d",&N); int a; stack st; vector str(N); for(i = 1; i

[C++]Stack 자료구조 - 올바른 괄호

#include #include using namespace std; int main() { int i,flag=1; stack s; char a[50]; scanf("%s",&a); for(i = 0; a[i] != '\0'; i++){ if(a[i] == '(') s.push(a[i]); else { if(s.empty()) { printf("NO"); flag = 0; break; }else s.pop(); } } if(s.empty() && flag == 1) printf("YES"); //위에서도 empty해서 NO찍고 또 YES찍을 우려가 있음. //그래서 위 상황과 아래 상황이 다르므로 flag로 구분함 else if(!s.empty() && flag == 1) printf("NO"); re..

[C++] Stack 자료구조 - K진수 출력

무조건 배열에 저장할 생각을 버리자, 뽑아오는 방식에 따라 자료구조를 활용하자 #include using namespace std; int stack[100], top = -1; void push(int x){ stack[++top] = x; } int pop(){ return stack[top--]; } int main() { int n, k; scanf("%d %d",&n,&k); char str[20] = "0123456789ABCDEF"; //이게 매우 유용함 while(n>0){ push(n%k); n=n/k; } while (top != -1) { printf("%c", str[pop()]); } return 0; } STL을 사용하지 않고 직접 Stack을 구현함. 11에 대한 2진수를 출력..

[C++] 결정 알고리즘(이분 검색 응용) - 뮤직비디오

결정 알고리즘 : 정답을 정해놓고 이보다 더 나은 정답을 이분 검색으로 찾아나가자 #include int a[1001], n; int Count(int size){//dvd개수 int i, cnt = 1, sum = 0; for(i = 1; i size){ //a[i]곡은 불가능하다. cnt++;//새로운 dvd sum = a[i]; } else sum = sum + a[i]; //가능하니까 기존 dvd에 곡 녹화 } return cnt; //필요한 dvd개수 리턴 } int main() { int m, i, lt = 1, rt = 0, mid, res, max = -2147000000; scanf("%d %d",&n,&m); for(i = 1; i max) max = a[i]; } while(lt

[C++] 이분검색(Binary Search) - 기초 문제

이분검색 : 검색 범위를 절반으로 축소해나가면서 찾아가는 검색 방식 기초 문제 #include #include using namespace std; int main() { int N, M, i; int lt,rt,mid; scanf("%d %d",&N, &M); vector vec(N); for(i = 0; i < N; i++){ scanf("%d", &vec[i]); //scanf("%d", tmp); //vec.push_back(tmp); } sort(vec.begin(), vec.end()); lt = 0; rt = N-1; while(lt M){ //key는 왼쪽에 있으므로 왼쪽으로 검색 범위 축소 rt = mid-1; } } return 0; } 검색하고자 하는 값을 찾을 때까지 배열을 절반으로..

[C++] 삽입정렬 - Least Recently Used(카카오캐시 변형)

삽입정렬 : 이전 값들과 비교하여 한 칸씩 뒤로 옮기고 삽입한다. #include int main() { int S,N,i,j,tmp,idx; int cnt[100]; scanf("%d %d",&S,&N); int mem[S]; mem[0] = 0; for(i = 0; i = 0; j--){ if(tmp == mem[j]) mem[j] = mem[j-1]; else mem[j+1] = mem[j]; } }else printf("!"); mem[0] = tmp; } for(i = 0; i < S; i++){ printf("%d",mem[i]); } return 0; } 삽입정렬의 특성을 이용하였다. ..