문제

https://school.programmers.co.kr/learn/courses/30/lessons/12951

풀이

시도 1

문자열을 공백으로 자르고 맨 앞자리가 숫자인지 확인 후 숫자가 아니면 title()이나 capitalize()로 앞글자만 대문자로 변경해주려 했습니다. 쉽다고 생각했는데 44.4점으로 런타임 에러가 발생했습니다.

solution.py
1
2
3
4
5
6
7
8
9
def solution(s):
    answer = ''
    arr = s.split(" ")
    for string in arr:
        if string[0].isalpha():
            answer += string.title() + " "
        else:
            answer += string + " "
    return answer[:-1]


시도 2

문자열을 돌면서 flag를 이용해서 첫번째가 숫자인지 알파벳인지 확인하고 공백이 있을경우 flag값을 변경했습니다. 66.7점으로 런타임 에러가 발생했습니다.

solution.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def solution(s):
    answer = ''
    flag = True
    for char in s:
        if char.isdigit():
            answer += char
            flag = False
        elif flag:
            answer += char.upper()
            flag = False
        elif char == " ":
            answer += " "
            flag = True
        else:
            answer += char.lower()
    return answer

시도 3

1번 풀이에서 앞글자가 숫자인지 판별하는 조건문을 뺐습니다.

solution.py
1
2
3
4
5
6
7
def solution(s):
    answer = ''
    s = s.split(' ')
    for i in range(len(s)):
        s[i] = s[i].capitalize()
    answer=' '.join(s)
    return answer


다른사람 풀이

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