RUBY

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

PS/Programmers

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

RUBY_루비 2020. 10. 28. 23:59

출처:: programmers.co.kr/learn/courses/30/lessons/12951

분류:: 

 

1. 문제 이해 및 해결과정

 

2. 풀이방법

 1. 함수 이용 str.upper() str.lower()

def solution(s):
    s=list(s) #s가 문자열이라면 item assignment가 불가능함 
    #첫글자와 공백 다음문자는 대문자
    #이외엔 소문자
    flag=True #단어의 첫글자 
    for i in range(len(s)):
        if flag==True: #단어의 첫글자라면
            s[i]=s[i].upper()
            flag=False
        else: #단어의 첫글자가 아니라면
            s[i]=s[i].lower() #소문자로 
            
        if s[i]==" ": #공백 뒤에는 단어의 첫글자 
            flag=True
    
    return ''.join(s)

- s가 문자열이라면 s[i]=s[i].upper()이 불가능함 

 2. capitalize()사용

def solution(s):
    answer = ''
    arr=s.split(" ")
    up=[]
    for x in arr:
        up.append(x.capitalize())

    
    return ' '.join(up)

 

3. 오답원인

  1. s.split(" ")의 경우는 답인데 s.split( )의 경우는 왜 답이 아닐까

- s.split()의 선행이나 후행에 공백을 포함해도 결과는 시작과 끝에 빈 문자열을 포함하지 않는다 

def solution(s):
    answer = ''
    arr=s.split()
    up=[]
    for x in arr:
        up.append(x.capitalize())
    print(up)
    
    return ' '.join(up)

ex) 반례 -> i love   u 를 입력할 경우

str.split(" ") 를 하고 위의 코드를 실행하면 I Love   U

str.split( )을 하면 결과는 I Love U (중간에 있던 빈 문자열이 사라진다) 

 

4. 알게된 점

str.capitalize()

:단어의 첫글자를 대문자로 바꿔줌 

str.split()과 str.split(" ") 의 차이 

- s.split()은 선행이나 후행에 공백을 포함해도 결과는 시작과 끝에 빈 문자열을 포함하지 않는다 -> 공백문자를 제거한다 

title()

: 각 단어의 첫 글자를 대문자로 변경

- 예시가 3People Unfollowed Me 가 되므로 3people에서 오류

Comments