우당탕탕 개발일지

프로그래머스 level 2 JadenCase 문자열 만들기 (Python 파이썬) 본문

알고리즘

프로그래머스 level 2 JadenCase 문자열 만들기 (Python 파이썬)

민아당긴아 2025. 3. 12. 20:45

💡문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

💡문제 분석 요약

주어진 문자열을 다음과 같은 규칙을 통해 바꾸시오.규칙 1. 모든 단어의 첫 글자는 대문자로규칙 2. 단어의 첫 글자가 숫자인 경우 대문자로 바꾸지 않는다.규칙 3. 단어는 띄어쓰기로 구분되어 있으며, 띄어쓰기가 연속으로 나올 수 있음

 

💡알고리즘 설계

1. 문자열의 처음부터 하나하나 탐색(반복문)

2. 한 글자가 공백문자이고 바로 뒤에 오는 글자가 공백문자가 아니라면 바로 뒤에 오는 글자를 대문자처리

3. 마지막에서 두번째 자리의 글자까지 위 과정을 반복

* 숫자를 대문자처리하면 아무것도 일어나지 않음. 따라서 if문을 이용해서 숫자인지 문자인지 구분할 필요가 없음

 

💡코드

def solution(s):
    s = s[0].upper() + s[1:].lower()
    l = s
    for i in range(len(s)-2):
        if s[i] == " " and s[i+1] != " ":
            l = l[:i+1] + l[i+1].upper() + l[i+2:]
    return l

s를 그대로 반복문 안에 써버리면 엉킬 수 있으니

s를 l이라는 리스트에 복제한 후에 l을 사용해서 대문자 처리를 해준다.

 

💡 오답 풀이

처음에 공백문자가 연속해서 나올 수 있다는 조건을 보지 못하고 공백을 기준으로 단어를 나눠 리스트로 만들고 이를 다시 붙이려고 했다.

s.split()         " ".join(s)

이거 써서 하려고 했는데 계속 부분점수가 나왔고, 런타임 에러가 떴다.

다시 문제를 자세히 읽어보니 공백문자가 연속으로 나올 수 있다는 조건이 있었다.

문제를 잘 읽자!