[프로그래머스 Lv2] JadenCase 문자열 만들기 (파이썬)

Jewon Joel Park·2022년 6월 8일
0

Programmers-solution

목록 보기
15/34

문제 링크


문제 설명

모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열을 만드는 함수 작성


제한 조건

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다
  • 2022년 1월 14일 제한 조건과 테스트 케이스가 추가되었습니다.

풀이 코드

def solution(s):
    new_str = ''
    is_first_letter = True
    for char in s:
        if char.isalpha() and is_first_letter:
            new_str += char.upper()
            is_first_letter = False
        elif char.isalpha() and not is_first_letter:
            new_str += char.lower()
        elif char.isdecimal() and is_first_letter:
            new_str += char
            is_first_letter = False
        elif char == " ":
            new_str += " "
            is_first_letter = True
        else:
            new_str += char
    return new_str

코드 설명

  1. 처음 보자마자 생각난건 title()함수와 split()+capitalize() 함수였는데, 제한조건에 공백문자가 연속으로 나올 수 있다는 것을 보고 방향을 선회하였음.
  2. 문자열은 immutable object이므로 수정된 문자열을 저장할 새로운 문자열 new_str 선언 및 공문자열로 초기화
  3. 또한, 첫 문자가 숫자 또는 문자열일 경우 다음 문자는 소문자화 시켜야하므로 해당 flag를 저장할 변수 is_first_letter 생성
  4. 이후 for Loop으로 각 문자를 순회하며 아래 경우의 수에 따른 문자열 처리 및 flag 변환
    • 해당 문자가 알파벳이면서 첫 문자일 경우
      - 대문자로 바꾸고 is_first_letter = False
    • 해당 문자가 알파벳이면서 첫 문자가 아닐 경우
      - 소문자로 바꿈
    • 해당 문자가 숫자이면서 첫 문자일 경우
      - 변환 없이 추가 후 is_first_letter = False
    • 해당 문자가 공백 문자일 경우
      - 변환 없이 추가 후 is_first_letter = True
    • 이외 경우(해당 문자가 숫자일 경우)
      - 변환 없이 추가
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글