오늘의 학습 키워드: split, capitalize

문제: JadenCase 문자열 만들기

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

연속된 공백문자에 주의해서 풀어야 합니다. 두 방식으로 풀이합니다.

1. 조건 걸어서 판별

공백이 아니라면 임시 문자열을 생성한 후 공백이 나온다면 JadenCase를 적용해서 리턴에 적용합니다.

def solution(s):
    answer = ''
    tmp = ''
    for i in s:
        if i!=' ':
            tmp+=i
            
        else:
            if tmp !='':
                tmp = tmp[0].upper() + tmp[1:].lower()
            answer+=tmp
            tmp = ''
            answer+= ' '
    if tmp !='':
        tmp = tmp[0].upper() + tmp[1:].lower()
    answer+=tmp
            
    return answer

 

2. split과 capitalize 사용하기

백준의 sys.stdin.readline().split()을 자주 사용하다가 split()을 이용하니까 공백이 모두 사라지는 현상이 발생했습니다.

def solution(s):
    words = s.split()
    print(words)

 

이 코드의 결과는 아래 사진과 같습니다. 공백이 전혀 들어가있지 않습니다.

이해를 돕기 위해 테스트 케이스를 임의로 만들어서 진행했습니다.

그런데 문제에는 공백문자가 연속해서 나올 수 있음을 말합니다.

따라서 공백값도 필요하다는 의미입니다.

이 경우에는 split(" ")을 사용해 공백을 갖고 분리한다고 넣어주면 됩니다.

def solution(s):
    words = s.split(" ")
    print(words)

공백 값도 정상적으로 리스트에 들어간 것을 확인 가능합니다.

 

이제 첫 문자만 대문자로 변경해주어야합니다.

위에서 처럼 인덱스를 가지고 값을 변경해줄 수 있지만.. 내장 함수를 사용해 봅니다.

 

def solution(s):
    words = s.split(" ")
    words2 = []
    for i in words:
        words2.append(i.capitalize())
    answer = ' '.join(words2)
    return answer

 

이렇게 capitalize() 함수를 사용하면 각 단어의 첫 글자를 대문자로 변환 가능합니다.

 

회고

실은 " " 이렇게 넣어줘도 공백이 안 들어오는 줄 알았습니다... 되네요? 하나 배웠습니다.

 

내일 학습할 것.

SQL, 코딩테스트 준비, 프로젝트... 실은 이력서 정리를 좀 할까 합니다.

+ Recent posts