JadenCase 문자열 만들기
풀이
처음에는 간단하게 title()을 쓸까 했지만 문제에서 숫자 다음은 그냥 소문자로 이어지도록하라 했기에 쓸 수 없었다.
그리고 다른 방법으로 capitalize()를 아래처럼 사용해봤다.
def solution(s):
s_list = list(map(str, s.split()))
for i in range(len(s_list)):
s_list[i] = s_list[i].capitalize()
return ' '.join(s_list)
하지만 위의 방법도 결국 제한 조건에서 '공백문자가 연속해서 나올 수 있습니다.'라는 조건으로 인해 예시로 "for the last week"의 경우에는 해결할 수 없었다. 결국 조금 코드가 길어지긴 하지만 아래의 방법을 사용했다.
- 문자열 전체 소문자화
- 각 문자 알파벳 여부 확인
- 문자열[0] 부분이 알파멧이라면 대문자
- 공백 이후의 문자는 1번인덱스부터는 이전 인덱스가 공백인지 확인하고, 이전 인덱스가 공백이면서 해당 인덱스가 숫자가 아니라면 대문자화
def solution(s):
answer = ''
# 전체 소문자화
s = s.lower()
for i in range(len(s)):
# 알파벳인지 확인
if s[i].isalpha():
# 문자열의 첫 문자인 경우 대문자로 answer에 입력
if i == 0:
answer += s[i].upper()
# 문자열의 첫 문자가 아닌데 이전이 공백이면 대문자로 만들어 answer에 입력
elif i != 0 and s[i-1] == ' ':
answer += s[i].upper()
# 위 상황이 아니면 answer에 그대로 입력
else:
answer += s[i]
# 알파벳이 아니면 answer에 그냥 대입
else:
answer += s[i]
return answer
다른 사람 풀이
이 풀이는 split()을 이용하되 단순 split()이 아닌 split(' ')을 이용함으로 공백까지 list에 입력시켰다.
따라서 이후 return값에 입력시키는 answer에서도 기존에 있던 공백이 줄어드는 문제없이 해결되었다.
def solution(s):
answer = ''
for i in s.lower().split(' '):
if answer == '':
answer += i.capitalize()
else:
answer += ' '+i.capitalize()
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv1 부족한 금액 계산하기 (python) (1) | 2024.01.30 |
---|---|
프로그래머스 Lv2 예상 대진표 (python) (1) | 2024.01.30 |
프로그래머스 Lv2 올바른 괄호 (python) (0) | 2024.01.29 |
프로그래머스 Lv1 소수찾기(python) (1) | 2024.01.29 |
프로그래머스 Lv1 K번째수(python) (0) | 2024.01.29 |