GDCS 알고리즘 스터디 2주차(4/3) 활동 기록입니다.
2주차에는 간단한 Reverse Vowels of a String 문제에 대한 풀이를 공유하였습니다.
문제 소개
문제 접근
문제의 'reverse'라는 키워드를 보고 스택의 LIFO 구조를 떠올림
주의할 점
소문자뿐만 아니라 대문자도 생각해야 함
문제 풀이 로직
- 문자열을 한 문자씩 스캔하며 모음이 나오면 스택에 push한 후 해당 자리를 특정 문자로 표시한다.
- 다시 스캔하며 표시한 자리(모음 자리)가 나오면 스택 최상위 요소를 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;
};
};
더 좋은 접근 방법이나 풀이법이 있다면 언제든지 댓글 남겨주세요😊
본 활동 기록은 기록자가 풀이한 문제를 위주로 기술되었으며, 스터디 레포지토리에서 더 많은 문제 풀이를 확인해보실 수 있습니다.
'3-2기 스터디 > 알고리즘' 카테고리의 다른 글
[알고리즘 스터디] 6주차 활동 기록 (0) | 2022.05.19 |
---|---|
[알고리즘 스터디] 5주차 활동 기록 (0) | 2022.05.16 |
[알고리즘 스터디] 4주차 활동 기록 (0) | 2022.05.16 |
[알고리즘 스터디] 3주차 활동 기록 (0) | 2022.04.10 |
[알고리즘 스터디] 스터디 시작 및 1주차 활동 기록 (0) | 2022.04.03 |
댓글