알고리즘

[프로그래머스 level2] JadenCase 문자열 만들기 | Python, Javacript

작은코딩 2023. 10. 6. 15:53

🔒 문제

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

 

프로그래머스

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

programmers.co.kr

JadenCase 문자열 만들기
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.

 

입출력 예

s return
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"

 


🔓 풀이

🔑 Python

🍎 풀이 1

# 방법 1. 문자열을 공백 기준으로 나누고(배열에 단어별로) 각 단어의 첫 문자열이 숫자가 아닌경우 JadenCase, 숫자인 경우는 LowerCase수정

def solution(s):
    answer = []
    words = s.split(' ')
    print(words)
    for word in words:
        if word == '':
            answer.append(word)
        elif not word[0].isdigit():
            answer.append(word.capitalize())
        else:
            answer.append(word.lower())
    return " ".join(answer)

 

🍎 풀이 2

# 방법 2. 모든 문자열을 소문자로 변경, 문자열 반복 시 첫 문자와 공백 이후에 오는 문자 숫자여부에 따른 대문자 변경

def isAlphaToUpperStr(word):
    if word.isalpha():
        return word.upper()
    return word

def solution(s):
    answer = ''
    for i, j in  enumerate(s.lower()):
        if i == 0:
            answer += isAlphaToUpperStr(j)
        elif j.isalpha() and s[i-1] == ' ':
            answer += isAlphaToUpperStr(j)
        else:
            answer += j
    return answer

🔑 JavaScript

🍎 풀이 1

function solution(s) {
    const answer = [];
    const words = s.toLowerCase().split(' ');
    for (const word of words) {
        if (word === '') {
            answer.push(word);
        } else if (isNaN(word[0])) {
            answer.push(word[0].toUpperCase() + word.slice(1));
        } else {
            answer.push(word);
        }
    }
    return answer.join(' ');
}

 


💉 피드백

split 함수를 사용할 때 구분자가 여러개 중복되는경우 리턴값에 ''(빈문자열)이 들어가는 경우를 고려하지 않아서 첫 트라이는 실패. 

이 부분에 대해서 궁금하다면 다음 글을 참고

https://a-littlecoding.tistory.com/139

 

[Python/파이썬] 문자열 메서드 split 함수 정리

🍏 공식문서 https://docs.python.org/ko/3.8/library/stdtypes.html#str.split 내장형 — Python 3.8.17 문서 다음 섹션에서는 인터프리터에 내장된 표준형에 관해 설명합니다. 기본 내장 유형은 숫자, 시퀀스, 매핑,

a-littlecoding.tistory.com