출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

생각보다 간단했지만 매우 귀찮은 노가다 문제였다:

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the solve function below.
def solve(s):
    p = re.compile('\w*')
    m = p.findall(s)
    for i in range(len(m)):
        m[i] = list(m[i])
        if m[i] == []:
            continue
        else:
            m[i][0] = m[i][0].upper()

    rearranged_list = []

    for j in m:
        rearranged_list.append(''.join(j))
    del rearranged_list[-1]

    new_list = []

    for k in rearranged_list:
        if k == '':
            new_string = k.replace('', ' ')
            new_list.append(new_string)
        else:
            new_list.append(k)
    return ''.join(new_list)

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')
    s = input()
    result = solve(s)
    fptr.write(result + '\n')
    fptr.close()

re.compile에서 findall을 이용하여 단어마다 짤라주어 이를 리스트로 만들었고, 이 단어들을 또 다시 한 글자마다 짤라주어, 단어마다 리스트를 만들어 주었다. 리스트 안의 각 리스트의 첫번째 글자들을 대문자로 정의를 시켜주고, 이를 다시 합쳐서 rearranged_list에 정의를 해준다. '' 와 같이 빈 문자열들도 리스트에 정의 되어 있는데, 리스트의 마지막 부분에더 이는 정의되어 있으므로 삭제를 시켜준다. 마지막으로 이 빈 문자열들 ''' '와 같이 공백이 있는 문자열로 대체시켜주고, 이 리스트를 new_listappend 시켜준다.

new_list에 있는 요소들을 ''.join()을 이용하여 마지막에 return 시켜준다.