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

코테 문제 풀이

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

미니모아 2022. 4. 26. 00:05
반응형

JadenCase 문자열 만들기

문제설명

0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.

  1. x의 모든 0을 제거합니다.
  2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.

예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.

0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.

제한사항

  • s의 길이는 1 이상 150,000 이하입니다.
  • s에는 '1'이 최소 하나 이상 포함되어 있습니다.

풀이

주의해야하는 조건

  • 공백 문자가 연속해서 나올 수 있다.
  • 첫 문자가 알파벳이 아닐 때는 이어지는 알파벳은 소문자를 써야한다.

공백을 기준으로 split해서 나눠서 공백인 공간이 리스트에 포함되도록 한 후에 공백이 아닌 나머지 단어들에 대해서

  • 만약 첫 글자가 숫자일 경우 나머지 글자를 소문자로 바꿔서 저장한다.
  • 모두 알파벳일 경우 첫 글자만 대문자로 바꾼다.

이후 공백을 이용해서 리스트를 join한다.

def solution(s):
    s = s.split(' ')
    for i, case in enumerate(s):
        if case == '':
            continue
        if not case[0].isdigit():
            s[i] = case.title()
        else:
            s[i] = case[0] + case[1:].lower()
    
    return ' '.join(s)

문자열 첫 글자를 대문자로 변환 시키는 내장 함수는 2가지가 있다. 2가지 동작은 약간 다르다.

함수동작

capitalize 주어진 문자열에서 맨 첫 글자를 대문자로 변환시킨다.
title 주어진 문자열에서 알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로 변환시킨다.
반응형
Comments