아이디어
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번 인덱스에는 공백이 올 수 있다.
'학습 노트 > 알고리즘 (Python)' 카테고리의 다른 글
99클럽 - 연속된 부분 수열의 합 (0) | 2024.04.17 |
---|---|
99클럽 - 신고 결과 받기, 개인정보 수집 유효기간 (0) | 2024.04.16 |
99클럽 - 모음사전 (0) | 2024.04.13 |
99클럽 - 기능개발, 대충 만든 자판 (0) | 2024.04.12 |
99클럽 - 이진 변환 반복하기 (0) | 2024.04.11 |