문자열 s가 하나의 문구를 나타낸다고 가정해 봅시다. 이때 해당 문구의 약어(acronym)를 구하는 것이 목표입니다. 약어는 반드시 대문자로 표기해야 하며, 단어 "and"는 결과에 포함되지 않아야 합니다.
예를 들어 입력이 "Indian Space Research Organisation"이라면, 각 단어의 첫 글자를 추출하여 출력은 ISRO가 됩니다.
해결 접근 방법
이 문제는 다음 단계를 따라 해결할 수 있습니다.
- 입력 문자열
s를 공백 기준으로 분리하여 각 단어를 배열(tokens)에 저장합니다. - 결과를 담을 빈 문자열(string)을 초기화합니다.
- 배열의 각 단어(word)를 순회하면서 다음을 수행합니다.
- 단어가 "and"가 아니라면, 해당 단어의 첫 글자를 결과 문자열에 이어 붙입니다.
- 모든 단어를 처리한 후, 결과 문자열을 대문자로 변환하여 반환합니다.
구현 예제
아래 파이썬 코드를 통해 더 자세히 이해해 보겠습니다.
class Solution:
def solve(self, s):
tokens = s.split()
string = ""
for word in tokens:
if word != "and":
string += str(word[0])
return string.upper()
ob = Solution()
print(ob.solve("Indian Space Research Organisation"))입력
"Indian Space Research Organisation"
출력
ISRO
코드 설명
s.split()은 문자열을 공백을 기준으로 나누어 단어 리스트를 생성합니다. 이후 반복문을 통해 각 단어를 확인하고, "and"가 아닌 경우에만 word[0]으로 첫 글자를 가져와 결과 문자열에 추가합니다. 마지막으로 .upper() 메서드를 사용해 전체 문자열을 대문자로 변환한 뒤 반환합니다.
이 방식의 시간 복잡도는 O(n)으로, n은 문자열의 길이입니다. 문자열을 한 번만 순회하면 되기 때문에 매우 효율적입니다.