문제 개요
여러 개의 단어로 이루어진 리스트가 주어졌을 때, 이 단어들을 하나로 이어 붙여 카멜 케이스(camelCase) 형식의 문자열을 만들어야 한다고 가정해 보겠습니다.
예를 들어 입력이 ["Hello", "World", "Python", "Programming"]이라면, 출력은 다음과 같습니다.
helloWorldPythonProgramming
카멜 케이스란 각 단어의 첫 글자만 대문자로 표기하고 단어 사이에 공백 없이 연결하는 표기법입니다. 단, 맨 앞 단어의 첫 글자는 소문자로 시작하는 것이 특징입니다.
해결 접근 방법
이 문제는 다음 단계를 따라 해결할 수 있습니다.
빈 문자열 s를 초기화합니다.
words 리스트의 각 단어에 대해 다음을 수행합니다.
단어의 첫 글자는 대문자로, 나머지 글자는 모두 소문자로 변환합니다.
변환된 단어를 문자열 s 뒤에 이어 붙입니다.
완성된 문자열 s의 첫 글자만 소문자로 바꾸어 최종 결과(ret)를 만듭니다.
ret를 반환합니다.
구현 예제
아래 코드를 통해 실제 구현 방법을 확인해 보겠습니다.
class Solution:
def solve(self, words):
s = "".join(word[0].upper() + word[1:].lower() for word in words)
return s[0].lower() + s[1:]
ob = Solution()
words = ["Hello", "World", "Python", "Programming"]
print(ob.solve(words))
입력
["Hello", "World", "Python", "Programming"]
출력
helloWorldPythonProgramming
코드 설명
핵심 로직은 "".join(...) 부분에 있습니다. 제너레이터 표현식을 사용해 각 단어를 word[0].upper() + word[1:].lower() 방식으로 변환한 뒤, 공백 없이 한 번에 연결합니다. 여기서 word[0]은 첫 글자, word[1:]은 두 번째 글자부터 끝까지를 의미합니다.
마지막으로 s[0].lower() + s[1:]를 통해 전체 문자열의 첫 글자만 소문자로 변경하여 순수한 카멜 케이스 형태를 완성합니다. 이 방법은 시간 복잡도 O(n)으로 단어 개수에 관계없이 효율적으로 동작합니다.