전체 글

전체 글

    [백준 1406번-C++] 에디터

    http://acmicpc.net/problem/1406 {코드} #include #include #include using namespace std; int main(){ int n; string s; cin >> s; cin >> n; list l(s.begin(),s.end()); auto now = l.end(); while(n--){ char tmp; cin >> tmp; if(tmp == 'L'){ if(now != l.begin()){ now--; } } else if(tmp == 'D'){ if(now != l.end()){ now++; } } else if(tmp == 'B'){ if(now != l.begin()){ now = l.erase(--now); } } else if(tmp =..

    [백준 1874번-C++] 스택 수열

    http://acmicpc.net/problem/1874 {코드} #include #include using namespace std; int main() { int n, num, cur = 1; stack s; string ans = ""; scanf("%d", &n); for (int i = 0; i = cur) { while (num + 1 != cur) { s.push(cur++); ans += "+\n"; } s.pop(); ans += "-\n"; } else { if (s.top() == num) { s.pop(); ans += "-\n"; } else { ans = "NO"; break; } } } cout

    [알고리즘&자료구조] 큐 - C++/파이썬

    큐란? 원소가 넣은 순서대로 나오는 자료구조(First in First out-FIFO) 위 그림처럼 1->2->3의 순서로 들어가면 1->2->3의 순서로 나온다. 큐는 대기줄을 생각하면 되는데 예를 들어 게임 접속 대기열을 큐라고 하는 것을 떠올리면 된다. *큐는 맨 앞과 맨 뒤의 원소들만 고려하기 때문에 나머지 원소들에 대해서는 알 수 없다. 큐 메소드 큐의 메소드로 다음과 같은 것들이 있다: front - 맨 앞의 원소 반환 back - 맨 뒤의 원소 반환 empty - 큐가 비어있는지 확인: 비어있으면 0 아니면 1 pop - 맨 앞의 원소 삭제 push - 맨 뒤에 원소 삽입 size - 큐의 길이 반환 언어마다 차이가 있을 수 있으나 위 메소드들은 거의 필수적으로 있다고 봐도 무방하다. 스택..

    [알고리즘&자료구조] 스택 - C++/파이썬

    스택이란? 먼저 들어간 원소가 나중에 나오는 자료구조(Last in First out-LIFO) 위의 그림과 같이 1->2->3의 순서로 들어가지만 나올 때는 3->2->1의 순서로 나온다. 스택을 생각할 때 엘레베이터를 생각하면 먼저 들어간 사람이 뒤로 가게 되고 마지막에 들어온 사람이 문과 가장 가까이 서게 된다고 생각하면 된다. 아니면 뚜껑이 위에 하나만 있는 용기도 마지막에 넣은 것들이 가장 먼저 나오게 된다. *스택은 맨 위의 원소만을 고려하기 때문에 그 외의 다른 원소들은 맨 위로 오기 전까지는 그 값을 알 수 없다. 스택 메소드 스택의 메소드로는 다음과 같은 것들이 있다: pop - 스택의 맨 위에 있는(마지막으로 들어온) 원소를 삭제함 push - 스택에 새로운 원소를 추가함 isEmpty..

    [백준 20191번-C++] 줄임말

    http://acmicpc.net/problem/20191 {코드} #include #include #include using namespace std; int solution() { string S, T; cin >> S; cin >> T; vector next(26); for (int i = 0; i < T.length(); i++) { next[T[i]-'a'].push_back(i); } int chkCnt = 0, chkIdx; for (int i = 0; i < 26; i++) { if (!next[i].empty()) {chkCnt++; chkIdx = i;} } if (chkCnt == 1 && T[chkIdx] == S[0]) return (S.length()+T.length()-1)/T..

    [백준 17609번-C++] 회문

    http://acmicpc.net/problem/17609 {코드} #include #include using namespace std; string s; int isPalindrome(int left, int right, bool testPseudo) { while (left < right) { if (s[left] != s[right]) { if (testPseudo) { if (isPalindrome(left+1, right, false) == 0 || isPalindrome(left, right-1, false) == 0) return 1; } return 2; } left++; right--; } return 0; } int main() { ios_base::sync_with_stdio(fals..

    [백준 17608번-C++] 막대기

    http://acmicpc.net/problem/17608 {코드} #include using namespace std; int main() { int rods[100001], n; scanf("%d", &n); for (int i=0; i=0; i--) { if (max < rods[i]) { max = rods[i]; cnt++; } } printf("%d\n", cnt); } {설명} 이 문제에서는 모든 막대기를 일렬로 나열한 후 오른쪽에서 보기 때문에 어떤 막대기는 오른쪽에 있는 모든 막대기보다 크면 보이게 되는 것입니다. 우선, 가장 오른쪽의 막대기, 즉, 마지막 인덱스의 막대기는 무조건 보이므로 이를 max값으로 잡고 왼쪽으로 하나씩 이동하며 만약 이 max값보다 막대기의 길이가 더 크면 ma..

    [파이썬] GCP를 이용한 유튜브 자막 프로그램 {K-UZA}

    깃허브 K-UZA(이하 쿠자)는 저를 포함한 6명이 함께한 프로젝트로 GCP의 STT와 번역 기능을 활용한 유튜브 자막 추출 프로그램입니다. *이름의 유래는 K(Korean) 유(튜브)자(막 프로그램)입니다. 프로젝트 코드에 대한 설명은 생략하고, 프로젝트의 과정들에 대해 얘기해보도록 하겠습니다. - 약 4주간의 개발과정을 한 글에 적는 것이기 때문에 글이 길 수 있습니다. 코드를 보고 싶으신 분은 깃허브를 보시면서 하시길 바랍니다. 이 프로젝트는 저희에게 유용하게 사용될 수 있고 저희가 써본 적이 없는 것을 써보고 싶었습니다. 그래서 유튜브에 올라와있는 해외 튜토리얼 영상들을 좀 더 편하게 볼 수 있지 않을까? 하는 생각에 이런 프로젝트를 진행하게 되었습니다. 주제가 정해지고 나서는 먼저 어떤 서비스를..