본문 바로가기

CS&알고리즘/프로그래머스

[프로그래머스 LV.2] JadenCase바꾸기

JadenCase문자열 바꾸기  

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

 

프로그래머스

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

programmers.co.kr

 

 

■ 문제

 

 

 

■ 풀이

처음에는 공백 기준으로 나누고 첫문자들만 대문자로 하면 되니까 뭐야! 이러고 그에 해당하는 코드를 작성했다 

그게 밑에 코드 ▼

def solution(s):
    word = s.split()  # 공백을 기준으로 단어를 나눔
    answer = ""  # answer 초기화
    for i in word:
        # 각 단어의 첫 글자를 대문자로, 나머지 글자를 그대로 추가
        answer += i[0].upper() + i[1:] + " "
    return answer.strip()  # 마지막 공백 제거 후 반환

 

 

근데 틀렸대 왜지??!?!?

 

코드를 실행시켰더니 뭔가 미묘,,,,,,뭐가 틀린걸까 ,,,,,눈 박박 비벼도 모르겠어서 걍 지피티를 돌렸는데 첫문자 아닌곳에 .lower()를 추가해보라고 했다.

그랬더니 테케는 통과했더니 실행시키니 걍 틀려버림 ...접근이 잘못된듯 싶어서 고민을 해봤다.

 

 

근데 생각해보니 나는 제한 조건에서 4번째에 해당하는 문장을 아예 무시하고 있었다. 공백에 대한 고려를 하지 않았고 공백이 연속으로 나올 수 있다는 조건을 무시했다.

그래서 이렇게 split()을 사용하지 않고 split(' ')을 사용해서 코드를 수정했고, len을 사용해 전체 문자 길이를 확인하며 공백을 유지할지 말지를 고려했다 !

 

def solution(s):
    words = s.split(' ')  # 공백을 유지하면서 문자열을 단어별로 분리
    answer = [] 
    for word in words:
        if len(word) > 0: 
            answer.append(word[0].upper() + word[1:].lower())
        else:
            #공백 유지
            answer.append(word)
    
    return ' '.join(answer)

 

 

그랬더니 저엉답!

결론: 실수할거면 문제라도 잘읽자!

 

끝!!