[4코1파] 4명의 안드로이드 개발자와 1명의 파이썬 개발자의 코딩 테스트 서막 : 4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원

START :

[3코1파] 2023.01.04~ (18일차)
[4코1파] 2023.01.13~ (9일차)

Today :

2023.01.21 [18일차]

프로그래머스 LV2.
JadenCase 문자열 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12951

문제 요약

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 사항
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.

입출력 예

※ 공지 - 2022년 1월 14일 제한 조건과 테스트 케이스가 추가되었습니다

문제 풀이 방법

문자열 공백으로 split 한 후에
화이썬 내장함수로 문자열 첫 번째가 알파벳이면 upper로, 다음 자리는 lower를 해주고
저번에 공부하다가 앞자리만 대문자로 바꿔주는 title 함수를 알게되서 써먹어봤다

처음에는 제한사항에 공백글자가 중복될 수 있다는 것을, 공백글자가 중복 안된다는 걸로 알아서 박살났달까?

def solution(s):
    return ''.join(string[0]+string[1:].lower()+' ' if string[0].isdigit()==1 else string+' ' for string in s.title().split()).rstrip()

그래서 다시 두뇌 풀가동

def solution(s):
    return ' '.join([string.title() if string[0].isalpha()==1 else string[0].upper()+string[1:].lower() for string in s.split(' ')])

중복인 경우를 넣어서 클리어

코드 공유

def solution(s):
    return ' '.join([string if len(string)==0 else string.title() if string[0].isalpha()==1 else string[0]+string[1:].lower() for string in s.split(' ')])

증빙

다른 사람 풀이

다들 이런식으로 풀음

여담

아,, 설날 쉬자고 할걸 ㅋ

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글