데이터사이언스 기록기📚

[프로그래머스] Level 2_JadenCase(연습문제) 본문

Coding Test/프로그래머스(Python)

[프로그래머스] Level 2_JadenCase(연습문제)

syunze 2022. 10. 4. 22:09

📌문제 유형

연습문제

 

📌문제

 

프로그래머스

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

programmers.co.kr

 

📌나의 풀이

1차 시도(44.4)

 - '공백문자가 연속해서 나올 수 있습니다.' 조건을 고려하지 않음

def solution(s):
    answer = ''
    words = list(map(str,s.split()))
    
    for word in words:
        if word != words[-1]:
            word = word[0].upper() + word[1:].lower()
            answer += word
            answer += ' '
        else:
            word = word[0].upper() + word[1:].lower()
            answer += word
    
    return answer
2차 시도(72.2)

 - ' a '인 문자열인 경우, s[i+1].isalpha() == False여서 대문자로 바뀌지 않는 문제 발생

def solution(s):
    answer = ''
    s = list(s)
    
    if s[0] != ' ':
        answer += s[0].upper()
    for i in range(1, len(s)-1):
        if s[i-1] == ' ' and s[i+1].isalpha() == True:
            s[i] = s[i].upper()
        elif s[i-1] != ' ':
            s[i] = s[i].lower()
        answer += s[i]
    
    if s[-2] != ' ':
        answer += s[-1].lower()
            
    return answer
3차 시도(통과)

 - 문자열 자체로는 순회할 수 없음 -> list로 만들기

 - 문자 바꾸기

  • s[0]은 무조건 upper
  • s[i-1] == ' '이면 s[i]는 upper() 이외는 s[i]는 lower()
def solution(s):
    answer = ''
    s = list(s)
    
    answer += s[0].upper()
        
    for i in range(1, len(s)):
        if s[i-1] == ' ':
            s[i] = s[i].upper()
        elif s[i-1] != ' ':
            s[i] = s[i].lower()
        answer += s[i]
            
    return answer

 

📌다른 사람들의 풀이

1) title() 사용

  • title() : 문자열 내 띄어쓰기 기준으로 각 단어 첫 글자는 대문자로, 나머지는 소문자로
 

파이썬 title() - 제타위키

다음 문자열 포함...

zetawiki.com

 

📌리뷰

- 문자열 range 순회 불가! list로 만들기

 

[파이썬] 문자열(String) 수정

[파이썬 기초] 문자열(String) 수정 보통 자료구조의 요소를 수정할 때는 인덱싱 후에 다른 값을 입력합니다. 하지만 문자열에서는 그런 방법이 통하지 않습니다. >>> S='hi hello' >>> S[0]='p' Traceback (mos

pybasall.tistory.com

- 공백이 여러개 있을 때는 정석(문자 하나씩 검사하기)이 최고!

728x90
Comments