알고리즘 풀이

[항해99] 프로그래머스 Jaden Case 문자열 만들기

매룬어 2025. 4. 16. 17:03

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

문제풀이

- 정석

def solution(s):
    answer = ''
    answer += s[0].upper()

    for i in range(1, len(s)):
        temp = ''
        if (s[i-1] == ' ') and (s[i] != " ") :
            #앞글자가 공백이고, 현재 글자가 공백아니면 대문자화
            temp = s[i].upper()
            answer += temp
        elif s[i-1] != ' ' and s[i].isupper():
            # 단어 첫글자가 아닌데 대문자인 경우 : 소문자화
            temp = s[i].lower()
            answer += temp
        else:
            answer += s[i]
        
    return answer

아주 정직한 풀이법이다. 

모든 문자열을 소문자화 시키지 않은 채, 조건을 꼼꼼히 따져가면서 대문자화, 소문자화 시켰다.

 

입력 문자열은 200개 이하다보니 이런 정석적인 풀이가 통했다. 

 

 

- 파이썬 내장함수 이용한 풀이법

' '.join([word.capitalize() for word in s.split(" ")])

 코드를 살펴보겠다.

 

1. s를 " " 으로 나눈다.

2. 1번 결과로 for문을 실행한다.

3. for문 요소 하나씩 capitalize() 함수를 사용해, 맨앞만 대문자화시키고 나머지는 소문자화 시킨다.

4. 3번의 결과를 차곡차곡 리스트에 적재한다.

5. 4번의 리스트 요소들을 " " 공백 기준으로 합친다.

 

참으로 파이써닉한 코드다.

 

느낀 점

capitalize(), title() 함수를 발견했다.

  • capitalize() : 캐피탈라이즈화한다. 즉 각 단어의 첫번째 글자만 대문자화 시키고 나머지는 소문자화한다.
  • title() : 각 단어의 첫글자를 대문자화시킨다.

그리고 오늘 내 풀이는 정석풀이지만, 이것을 어떻게 짧고 효율적으로 바꿀 것인지도 살펴봐야할 거 같다.

 

알고리즘을 푸는 방법은

1. 우선 정석적인 풀이 방법 생각

2. 1번 개선 

이라고 한다. 

 

2번까지 나아가야 더 좋은 알고리즘 풀이법을 발견할 수 있을 거 같다.