생각보다 간단했지만 매우 귀찮은 노가다 문제였다:
#!/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_list
에 append
시켜준다. new_list
에 있는 요소들을 ''.join()
을 이용하여 마지막에 return
시켜준다.
'알고리즘 테스트 > Hackerrank 문제풀이 및 해설' 카테고리의 다른 글
<Hackerrank 문제풀이: 파이썬> collections.Counter() (0) | 2020.11.25 |
---|---|
<Hackerrank 문제풀이: 파이썬> itertools.product() (0) | 2020.11.25 |
<Hackerrank 문제풀이: 파이썬> String Formatting (0) | 2020.11.24 |
<Hackerrank 문제풀이: 파이썬> Designer Door Mat (0) | 2020.11.24 |
<Hackerrank 문제풀이: 파이썬> Text Wrap (0) | 2020.11.24 |