1. 프로그래머스 알고리즘 문제 LV2 - JadenCase 문자열 만들
문제점
# JadenCase 문자열 만들기
# 문제 설명
# JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
# 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
# 제한 조건
# s는 길이 1 이상 200 이하인 문자열입니다.
# s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
# 숫자는 단어의 첫 문자로만 나옵니다.
# 숫자로만 이루어진 단어는 없습니다.
# 공백문자가 연속해서 나올 수 있습니다
공백을 기준으로 문자열 나누기
capitalize를 통해서 대문자로 바꾸기
시도해 본 것들
.split()을 통해서 문자열을 나누기
.capitalize()를 사용해서 대문자로 바꿔주기
def solution(s):
answer = ''
str_list = []
# 공백을 기준으로 문자열 나누기
str_list.append(s.split())
# capitalize를 통해서 대문자로 바꾸기
for i in range(len(str_list)):
str_ = str(str_list[i])
answer += str_.capitalize()
return answer
print(solution("3people unFollowed me"))
# 출력 ['3people', 'unfollowed', 'me']
''이 섞여있고, 앞의 알파벳이 소문자로 출력됨
def solution(s):
answer = ''
str_list = []
# 공백을 기준으로 문자열 나누기
str_list = s.split()
print(str_list)
# capitalize를 통해서 대문자로 바꾸기
for i in range(len(str_list)):
str_ = str(str_list[i]+' ')
answer += str_.capitalize()
return answer
# 출력 3people Unfollowed Me <- 끝에 띄어쓰기 하나
코드를 살펴보며 split()을 append 할 필요가 없을 것 같아서 바꿔줬더니 capitalize()도 먹히고 내가 생각한 결과가 나왔다.
하지만 끝에서 공백이 나오면서 결과가 조금 달랐다.
for i in range(len(str_list)):
if i == 0:
str_ = str(str_list[i])
else:
str_ = str(' ' + str_list[i])
answer += str_.capitalize()
간단한 해결 방법으로 i가 0일때는 띄어쓰기가 없고 그 이외에는 앞에서 ' '를 추가했더니 capitalize()가 무시당했다.
def solution(s):
answer = ''
str_list = []
# 공백을 기준으로 문자열 나누기
str_list = s.split()
# capitalize를 통해서 대문자로 바꾸기
for i in range(len(str_list)):
str_ = str(str_list[i])
if i == 0:
answer += str_.capitalize()
else:
answer += ' ' + str_.capitalize()
return answer
테스트 케이스는 통과했는데 제출했을 때 오답이 나왔다.
공백이 연속 두번 이상 나올 수 있다는 것을 보고 띄어쓰기를 추가한 테스트 케이스를 만들어보자 여기서 문제가 발생했다.
['3people', 'unFollowed', 'me']
print()문을 찍어보며 확인한 결과
split()으로 list로 만드는 과정에서 공백을 늘려도 다 무시해 버린 것을 찾았다.
그래서 split(' ')으로 기준을 제시했다.
해결 방법
def solution(s):
answer = ''
str_list = []
# 공백을 기준으로 문자열 나누기
str_list = s.split(' ')
# capitalize를 통해서 대문자로 바꾸기
for i in range(len(str_list)):
str_ = str(str_list[i])
# 첫번째는 ' ' 없이 추가하기
if i == 0:
answer += str_.capitalize()
else:
answer += ' ' + str_.capitalize()
return answer
print(solution("3people unFollowed me"))
print(solution("3people unFollowed me"))
if문 없이 만들 수도 있을 것 같은데 아직은 잘 모르겠다.
vscode같은 편집기 없이 웹에서 풀려면 python과 더 친해져야겠다.
알게 된 점
split()으로 사용하면 공백이 아무리 많아도 다 무시하고 결과를 출력해준다.
split(' ')으로 만들면 공백이 하나 추가 될 경우 ' '로 만들 수 있다.
capitalize()는 첫 번째 문자를 대문자로 바꿔준다.
'개발일지 > TIL' 카테고리의 다른 글
TIL 23-04-04 (0) | 2023.04.04 |
---|---|
TIL 23-04-03 (2) | 2023.04.03 |
TIL 23-04-01 (0) | 2023.04.01 |
TIL 23-03-31 (0) | 2023.04.01 |
TIL 23-03-30 (0) | 2023.03.30 |