본문 바로가기

학습 노트/알고리즘 (Python)

99클럽 - JadenCase 문자열 만들기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

아이디어

Python의 문자열은 배열과 비슷하면서도 많이 다르다.
때문에 접근방법은 비슷하면서도 호환이 안 되는 경우가 많기 때문에 우회해서 푸는 잔머리가 중요하다.

유의할 점은 문제 조건의 "공백문자가 연속해서 나올 수 있습니다." 부분이다.
이 조건 때문에 rstrip이나 lstrip을 쓸 수도, 맘 편히 뗐다 붙였다도 할 수 없다.

단어의 위치는 find 메서드로 찾고, 데이터 조작 범위는 무빙 윈도우와 비슷하게 구현했다.

풀이

def solution(s):
    answer = ""
    
    for word in s.split():
        tail = s.find(word) + len(word)
        temp = s[:tail]
        
        if word[0].isalpha():
            out = word.capitalize()
            answer += temp.replace(word, out)
        elif word[0].isdigit():
            out = word.casefold()
            answer += temp.replace(word, out)
        else:
            answer += temp
            
        s = s[tail:]
        
    if s:
        answer += s
    
    return answer

temp로 조작할 범위를 떼어내서 replace로 치환했다.
이 때 if문의 조건은 temp의 0번 인덱스가 아닌 word의 0번 인덱스가 되어야 함에 주의하자.
단어의 마지막 인덱스를 기준으로 삼기에 temp의 0번 인덱스에는 공백이 올 수 있다.