📌 LeetCode [824]: Goat Latin
🔗 문제 링크
문제 설명 📄
문장이 주어졌을 때, Goat Latin으로 변환합니다. 변환 규칙은 다음과 같습니다:
- 모음으로 시작하는 단어는 단어 끝에 "ma"를 추가합니다.
- 모음: 'a', 'e', 'i', 'o', 'u' (대소문자 구분 없음).
- 자음으로 시작하는 단어는 첫 글자를 단어 끝으로 이동시키고, "ma"를 추가합니다.
- 변환된 각 단어에 대해, 문장에서의 순서에 따라 끝에 'a'를 추가합니다.
- 첫 번째 단어는 'a', 두 번째 단어는 'aa', 세 번째 단어는 'aaa'...
- 변환된 단어를 공백으로 구분하여 반환합니다.
문제 해결 접근 ✨
- 문장 분리 및 순회:
- 입력 문자열을 단어로 나눕니다.
- 각 단어를 순서에 따라 변환합니다.
- 변환 규칙 적용:
- 모음과 자음의 구분: 첫 글자가 모음인지 확인.
- 자음일 경우, 첫 글자를 단어 끝으로 이동.
- 모든 단어 끝에 "ma"와 순서에 따른 'a'를 추가.
- 결과 병합:
- 변환된 단어를 다시 공백으로 구분된 문장으로 결합하여 반환.
Solution 💻
class Solution:
def toGoatLatin(self, sentence: str) -> str:
sentence = sentence.split(" ")
vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}
answer = []
for i, word in enumerate(sentence):
if word[0] not in vowels:
word = word[1:] + word[0]
word += "ma" + "a" * (i + 1)
answer.append(word)
return " ".join(answer)
시간 복잡도 분석 ⏲️
- 단어 변환: (O(n * m)), 여기서 (n)은 단어의 수, (m)은 평균 단어 길이.
- 결과 결합: (O(k)), (k)는 변환된 단어의 총 길이.
- 총 시간 복잡도: (O(n * m + k)).
공간 복잡도 분석 🗄️
- 문자열 저장 공간: (O(k)), 변환된 단어의 총 길이.
- 총 공간 복잡도: (O(k)).
'알고리즘' 카테고리의 다른 글
LeetCode [1190]: Reverse Substrings Between Each Pair of Parentheses (0) | 2024.12.30 |
---|---|
LeetCode [2900]: Longest Unequal Adjacent Groups Subsequence I (0) | 2024.12.30 |
LeetCode [1603]: Design Parking System (0) | 2024.12.28 |
LeetCode [1046]: Last Stone Weight (0) | 2024.12.27 |
LeetCode [496]: Next Greater Element I (0) | 2024.12.26 |