developerU

[프로그래머스 C#] level2 JadenCase 문자열 만들기 본문

Algorithm/Programmers

[프로그래머스 C#] level2 JadenCase 문자열 만들기

developerU 2021. 4. 20. 22:55

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.제한 조건

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

입출력 예

sreturn

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

문제 풀이

using System;

public class Solution {
    public string solution(string s) {
        string answer = "";
        
        s = s.ToLower();
        char[] temp = s.ToCharArray();
        answer += Char.ToUpper(temp[0]);
        
        for(int i=1; i<temp.Length; i++)
        {
            if(temp[i] == ' ' && i+1<temp.Length)
                temp[i+1] = Char.ToUpper(temp[i+1]);
        
            answer += temp[i];
        }
        
        return answer;
    }
}

 

다른 사람 문제 풀이

using System.Text;

public class Solution {
    public string solution(string s) {
        StringBuilder answer = new StringBuilder();
        var charArray = s.ToLower().ToCharArray();

        for (int i = 0; i < charArray.Length; i++)
        {
            answer.Append(i == 0 || answer[i - 1] == ' '? char.ToUpper(charArray[i]) : charArray[i]);
        }

        return answer.ToString();
    }
}

공백이 있는 문자를 찾을 때 i로 비교하고 i+1(공백 다음번 문자)를 대문자로 바꿀 생각만 했는데

공뱅이 있는 문자를 i-1(대문자로 바꾸어야하는 문자 이전)로 하고 i를 대문자로 하면 훨씬 간편하다...

 

Comments