문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제 설명

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

 

 

첫번째 반복문에서 공백이 등장할때마다 공백 문자열을 리스트에 추가 했다.

 

두번째 반복문에서 공백이 아닌 문자열들을 소문자화, 첫 문자만 대문자화한 뒤 

결과 문자열에 재처리한 문자열들과 공백 문자열들을 더해 리턴해주었다.

 

공백 문자열이 마지막까지 있는 경우도 고려해주어야 모든 케이스가 통과된다.

 

 

반응형

+ Recent posts