문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건- s는 길이 1 이상인 문자열입니다.
- s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
- 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
풀이
- .upper()와 .lower()를 쓰면 쉽게 대소문자로 바꿀수있겠지만, 아스키코드를 연습해보고 싶어서 아스키코드 값으로 시도해보았다.
- 중간에 공백이 여러개 있는 경우가 너무 힘들었다 ㅜㅜ
- 문자열을 먼저 .split(" ")로 나누고 "" 빈 공백인 경우 " "로 변경,
- 실제 한 단어가 끝나고 대소문자 변형이 완료되어서 공백이 필요한 경우 위의 경우가 아닌 경우에만 공백 추가
def solution(s):
s_list = s.split(" ")
print(s_list)
count = 0
answer_str = ''
for i in range(len(s_list)):
s_str = str(s_list[i])
if s_list[i] == "": #현재 문자가 공백인 경우 공백 추가
answer_str += " "
else :
if 97 <= ord(s_str[0]) and ord(s_str[0]) <= 122 :
answer_str+= chr(ord(s_str[0])-32)
else :
answer_str+=s_str[0]
for j in range(1, len(s_str)) :
if not 97 <= ord(s_str[j]) and ord(s_str[j]) <= 122 : #중간이 대문자인 경우
answer_str += chr(ord(s_str[j])+32)
else :
answer_str += s_str[j]
if s_list[i] != "": #빈 공백이 아닌 경우 단어 사이에 공백 추가
answer_str += " "
print(answer_str[:-1])
return answer_str[:-1]
풀이 2
- capitalize() 함수를 쓰면 쉽게 첫 글자만 대문자로, 뒤에 문자는 소문자로 변경해준다.
def solution(s):
answer = ''
new_str = s.split(' ')
for i in range(len(new_str)):
new_str[i] = new_str[i].capitalize()
answer = ' '.join(new_str)
return answer
'코테풀이 > 프로그래머스' 카테고리의 다른 글
2단계_피보나치 수 (0) | 2021.12.29 |
---|---|
2단계_다음 큰 숫자 (0) | 2021.12.29 |
2단계_짝지어 제거하기 (0) | 2021.12.27 |
2단계_H-Index (0) | 2021.12.27 |
2단계_괄호 변환 (0) | 2021.12.23 |
2단계_JadenCase 문자열 만들기(대소문자 변경)