본문 바로가기
  • GDG on campus Ewha Tech Blog
3-2기 스터디/알고리즘

[알고리즘 스터디] 2주차 활동 기록

by akxmcse 2022. 4. 5.
GDCS 알고리즘 스터디 2주차(4/3) 활동 기록입니다.
2주차에는 간단한 Reverse Vowels of a String 문제에 대한 풀이를 공유하였습니다.

 

문제 소개

 

문제 접근

문제의 'reverse'라는 키워드를 보고 스택의 LIFO 구조를 떠올림

 

주의할 점

소문자뿐만 아니라 대문자도 생각해야 함

 

문제 풀이 로직

  1. 문자열을 한 문자씩 스캔하며 모음이 나오면 스택에 push한 후 해당 자리를 특정 문자로 표시한다.
  2. 다시 스캔하며 표시한 자리(모음 자리)가 나오면 스택 최상위 요소를 pop한다.

ex) hello → h$ll$ → holle

 

문제 풀이

#include <iostream>
#include <string.h>
#include <stack>

using namespace std; 

class Solution {
public:
    string reverseVowels(string s) {
        stack<char> vowel;

        for(int i = 0; i < s.size(); i++){ // 문자열 크기만큼 문자 하나씩 스캔
	// 만약 i번째 문자가 모음이면
            if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U'){
                vowel.push(s[i]); // 스택에 push
                s[i] = '$'; // 그 자리에 표시
            };
        };
        for(int i = 0; i < s.size(); i++){ // 다시 문자열 크기만큼 문자 하나씩 스캔
            if(s[i] == '$'){ // 만약 i번째 문자가 표시된 문자이면 (모음 자리이면)
                s[i] = vowel.top(); // 스택 최상위 요소를 i번째 자리에
                vowel.pop();
            };
        };
        return s;
    };
    
    int main() {
        string s;
        cin >> s;
        s = reverseVowels(s);
        cout << s;
        return 0;
    };
};

 


더 좋은 접근 방법이나 풀이법이 있다면 언제든지 댓글 남겨주세요😊

본 활동 기록은 기록자가 풀이한 문제를 위주로 기술되었으며, 스터디 레포지토리에서 더 많은 문제 풀이를 확인해보실 수 있습니다.

 

GitHub - gdscewha-3rd/Study-Algorithm: GDSC EWHA 알고리즘 스터디 레포지토리입니다.

GDSC EWHA 알고리즘 스터디 레포지토리입니다. Contribute to gdscewha-3rd/Study-Algorithm development by creating an account on GitHub.

댓글