코테 공부/프로그래머스

[Python] JadenCase 문자열 만들기

prefer_all 2022. 10. 10. 13:40

문제 설명

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

제한 조건

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

 

입출력 예

s return
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"
"Tree  a  b " "Tree  A  B "

 


풀이

위 문제는 띄어쓰기가 있을 때 결과값에서도 해당 칸 수만큼의 띄어쓰기를 유지해야 한다.

def solution(s):
    # 공백을 기준으로 맨 앞글자 대문자
    s_list = s.split(' ')
    answer = []
    for s in s_list:
        if s == "": #issue: 공백 여러 개일 때 어떻게 처리
            answer.append('')
        else:
            answer.append(s.capitalize())
    return ' '.join(answer)

 

 

capitalize() 함수는 아래와 같이 list의 각 item에 대해 적용되지 않고, 새로운 list를 선언해서 append하는 식으로 사용해야한다.

s= "abc rgf ewq"
s_list = s.split(' ')
for s in s_list:
    s.capitalize()
print(s_list) # 출력 결과: ['abc', 'rgf', 'ewq']

 

list comprehension을 통해서 한 줄로도 표현 가능하다

s= "abc rgf ewq"
s_list = s.split(' ')
print([s.capitalize() for s in s_list]) # 출력 결과: ['Abc', 'Rgf', 'Ewq']

 

위 문제에서 list comprehension을 사용했다면 아래와 같다

def solution(s):
    return ' '.join([word.capitalize() for word in s.split(" ")])

 

📝

Split 함수

 

split을 적용하면 list가 생성된다. split에 파라미터를 적용하지 않으면 띄어쓰기와 엔터로 구분된다.

s = "A  B C DE "
s = s.split() # 띄어쓰기, 엔터 구분
print(s) # ['A', 'B', 'C', 'DE']

s2 = "A  B C DE " # 띄어쓰기 한 칸만 구분
s2 = s2.split(" ")
print(s2) # ['A', '', 'B', 'C', 'DE', '']
# A와 B 사이의 띄어쓰기가 두 칸이었음

 

Split과 Join 함수

s = ['A', '', 'B', 'C', 'DE', '']
# s를 "A  BC DE  "의 string으로 만들고 싶음
answer = ' '.join(s)
print(answer) # A  B C DE 
print(answer.split(' ')) # ['A', '', 'B', 'C', 'DE', '']

 

📝

String의 대문자, 소문자 바꾸기

 

s.upper()   모든 문자를 대문자로 변환시킨다

s.lower()    모든 문자를 소문자로 변환시킨다

 

s.capitalize()   문자의 맨 앞글자만 대문자로 변환시킨다

s.title()    알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로 변환시킨다

ex = 'abcd'
print(ex.capitalize()) # Abcd 동일
print(ex.title()) # Abcd

ex2 = 'aAbB'
print(ex2.capitalize()) # Aabb 동일
print(ex2.title()) # Aabb

ex3 = 'a2b3c4'
print(ex3.capitalize()) # A2b3c4 다름
print(ex3.title()) # A2B3C4

ex4 = 'abc-def gh'
print(ex4.capitalize()) # Abc-def gh 다름
print(ex4.title()) # Abc-Def Gh

 

 

'코테 공부 > 프로그래머스' 카테고리의 다른 글

[Python] 후보키 **  (0) 2022.10.17
[Python] 프렌즈4블록  (0) 2022.10.10
[Python] 이상한 문자 만들기 (쉬움)  (0) 2022.09.06
[Python] 삼각 달팽이  (0) 2022.08.19
[Python/스택,큐] 프린터(어려움)  (0) 2022.08.10