문제
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다.
단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
입출력 예
입력 | 출력 |
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
유의해야 할 점은 공백문자가 여러 개일 수 있어 단순 split()을 하면 안된다.
풀이 (python)
def solution(s):
answer = ''
lspace = list()
is_space = False
space = ''
for x in s:
if x==' ':
is_space = True
space+=' '
elif x!=' ' and is_space==True:
is_space = False
lspace.append(space)
space=''
if space!='': lspace.append(space)
sp = 0
tmp = s.split()
for t in tmp:
y = t.lower().capitalize() #문자열 전체 소문자 치환 후 첫글자만 대문자화
answer+=y
if sp<len(lspace):
answer+=lspace[sp]
sp+=1
return answer
첫번째 반복문에서 공백이 등장할때마다 공백 문자열을 리스트에 추가 했다.
두번째 반복문에서 공백이 아닌 문자열들을 소문자화, 첫 문자만 대문자화한 뒤
결과 문자열에 재처리한 문자열들과 공백 문자열들을 더해 리턴해주었다.
공백 문자열이 마지막까지 있는 경우도 고려해주어야 모든 케이스가 통과된다.
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
프로그래머스 (Level 1) : 핸드폰 번호 가리기 / C++ (string, substr) (0) | 2022.10.06 |
---|---|
프로그래머스 (Level 2) : 게임 맵 최단거리/ Python/ 너비 우선 탐색(BFS, deque) (0) | 2022.08.24 |
프로그래머스 (Level 2) : 멀리뛰기 / Python / dp (0) | 2022.08.11 |
프로그래머스 (Level 1) : 신규 아이디 추천 / Python / 2021 KAKAO BLIND RECRUITMENT (0) | 2022.08.09 |
프로그래머스 (Level 1) : 3진법 뒤집기 / Python / 월간 코드 챌린지 시즌1 (0) | 2022.07.10 |