하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
[3코1파] 2023.01.04~ (18일차)
[4코1파] 2023.01.13~ (9일차)
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(' ')])
증빙
다른 사람 풀이
다들 이런식으로 풀음
여담
아,, 설날 쉬자고 할걸 ㅋ