99클럽 코테 스터디 4일차 TIL - split()

Wonjun·2024년 7월 25일
0

알고리즘 & 문제풀이

목록 보기
45/50
post-thumbnail

JadenCase 문자열 만들기

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() 과 split(' ')은 다르다.

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', '', '!']

capitalize()

맨 첫 글자만 대문자로 반환한다. 이런 게 있는지 처음 알았다.

a = "a2b3c4"
a.capitalize()
# A2b3c4

문제에서 입력 받는 n의 크기를 보고 브루트 포스를 돌려도 될지 말지 가늠해보자.

profile
알고리즘

0개의 댓글