https://school.programmers.co.kr/learn/courses/30/lessons/12951
def solution(s):
answer = []
if 'a' <= s[0] <= 'z':
answer.append(s[0].upper())
else:
answer.append(s[0])
for i in range(1, len(s)):
if '0' <= s[i] <= '9':
answer.append(s[i])
elif s[i - 1] == ' ' and s[i] != ' ':
answer.append(s[i].upper())
else:
answer.append(s[i].lower())
return ''.join(answer)
s는 길이 1 이상 200 이하인 문자열
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있다.
숫자는 단어의 첫 문자로만 나온다.
숫자로만 이루어진 단어는 없다. -> string or char인 숫자에upper()
또는lower()
를 사용해도 에러가 발생하지 않는다. 함수 내부적으로 숫자를 그대로 반환한다.
공백문자가 연속해서 나올 수 있다. -> 이 부분에서 많은 분들이 split(' ')를 쓴다.문자열을 순회하며 처리한다. 숫자는 그대로 붙인다. 단어의 공백을 기준으로 대문자가 결정되므로, i 번째 문자를 볼 때 i - 1 번째가 공백이라면 and i 번째 문자가 공백이 아니라면 숫자가 아닌 이상 대문자가 와야하므로 upper()를 가해준다. 나머지는 단어의 맨 앞자리에 위치한 문자가 아니기 때문에 lower()를 가해서 소문자로 만들어준다.
i - 1 번째에 접근하기 위해(리스트의 인덱스가 거꾸로 도는 것을 방지) 문자열 s의 맨 처음을 우선 처리해준 후 for 문을 문자열 s의 첫 번째 인덱스부터 돈다.
정기 스터디를 진행해봤는데, 잘하시는 분이 많은 것 같다.
split()은 모든 공백 문자를 구분자로 사용한다. 공백(whitespace)은 스페이스(' '), 탭('\t'), 줄 바꿈('\n') 등을 포함한다. 또한, 연속된 공백도 하나의 구분자로 처리한다.
split(' ')는 정확히 스페이스(' ') 문자 하나를 기준으로 문자열을 나눈다. 연속된 스페이스는 빈 string을 생성한다.
text = "Hello World !"
# Using split()
result1 = text.split()
print(result1) # ['Hello', 'World', '!']
# Using split(' ')
result2 = text.split(' ')
print(result2) # ['Hello', '', '', 'World', '', '!']
맨 첫 글자만 대문자로 반환한다. 이런 게 있는지 처음 알았다.
a = "a2b3c4"
a.capitalize()
# A2b3c4