[프로그래머스] Lv2 - JadenCase 문자열 만들기

김멉덥·2023년 8월 30일
0

알고리즘 공부

목록 보기
93/171
post-thumbnail
post-custom-banner

문제

프로그래머스 연습문제


코드 구현

def solution(s):
    answer = ''

    s_split = list(s.split(" "))    # 공백으로 split하여 문자 담아놓기

    for i in range(len(s_split)):
        # 만약 연속된 공백이라면 split 했을 때 "" 가 리스트 안에 존재
        if(s_split[i] == ""):
            answer += " "

        # 연속된 공백이 아니라면 (문자인 경우)
        else:
            # 맨 앞글자가 숫자가 아닐 때
            if not(s_split[i][0].isdigit()):
                answer += s_split[i][0].upper() + s_split[i][1:].lower()
            # 맨 앞글자가 숫자일 때
            else:
                answer += s_split[i][0] + s_split[i][1:].lower()

            if(i != len(s_split)-1):    # 맨 끝 문자가 아니라면 문자 간의 공백이 중간에 있으니 공백 추가
                answer += " "

    # 연속된 공백이 맨 끝에 붙는다면 마지막 문자 뒤에 공백이 추가로 붙어서 공백 수가 안맞음 -> 고로 공백 하나 제거를 위해 맨 끝 제거
    if(s_split[-1] == ""):
        answer = answer[0:len(s)]

    return answer

풀이

  • s.split(” “) 으로 공백 기준으로 띄워진 문자들을 리스트 안에 담는다.
  • 연속된 공백이 존재할 수 있으므로 리스트 안에 존재하는게 만약 “” 이라면 → 이는 공백이 담긴것 → 고로 공백으로 추가해준다.
  • 띄어쓰기가 제일 문제인데, 맨 마지막을 제외하고는 띄어쓰기가 다 존재해야 하므로 조건문을 통해 띄어쓰기 해준다.
  • 그러나 마지막에 연속된 공백이 존재하는 케이스가 있을 때, 문자와 공백 사이에 띄어쓰기가 되어버렸으므로 맨 끝을 제거해준다.
    • ex) “hello world “ → 이러면 s_split에는 [’hello’, ‘world’, ‘’, ‘’, ‘’] 이렇게 담기게 된다.
    • 그래서 문자 world‘’ 사이에 공백이 띄어쓰기로 하나 더 붙어버려서 맨 뒤 공백이 3개가 아닌 4개가 되어버린다.
    • 따라서 만약 문자열의 마지막에 공백이 존재한다면 → 띄어쓰기가 한번 더 들어가버렸기 때문에 맨 끝 공백을 제거하여 정답을 만들어준다.

profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글