-
C# 프로그래머스 Lv2 JadenCase 문자열 만들기코딩테스트 2020. 8. 19. 16:24
- JadenCase 문자열 만들기
-
darklight
sublimevimemacs
C#
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상인 문자열입니다.
- s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
- 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )
입출력 예
s return
"3people unFollowed me" "3people Unfollowed Me" "for the last week" "For The Last Week"
풀이
테스트 케이스 외 고려해야할 case : 문자열의 앞 뒤에 공백이 들어가 있는 경우
" 3people unFollowed me " 결과
" 3people Unfollowed Me " stfing s를 전부다 소문자로 바꿔준다. s.ToLower();
위 case 때문에 처음에는 trim(" ")을 사용해서 띄어쓰기를 기준으로 각각 스트링 배열을 생성했었다.
string_s[0]= "3people"
string_s[1]= "unfollowed"
string_s[2]= "me"
위와 같이 생성해놓고 CharArray로 바꾼다음 제일 첫번째 인덱스의 알파벳을 Upper를 사용해서 대문자로 바꿔주려고 했었으나 위 케이스 때문에 실패했다. 문자의 제일 앞이나 제일 뒤에 공백이 있으면 플래그를 줘서 플래그가 true가 되면 앞 뒤에 공백을 추가하면 될 것 같긴하나 밑의 방법이 더 간단하다.
새로운 코드로는 string s를 바로 char배열로 만들어 버리고 그 char배열을 처음부터 끝까지 반복문을 돌린다.
제일 첫 자리는 공백이든 숫자든 알파벳이든 Char.ToUpper를 해버린다. 참 좋은게 소문자일 때만 대문자로 만들어준다.
그리고 반복문이 돌다가 공백을 만나면 공백의 다음 문자를 대문자로 만들어서 해결했다.
using System; using System.Text; public class Solution { public string solution(string s) { string answer = ""; s = s.ToLower(); char[] tempchar = s.ToCharArray(); for (int i = 0; i < tempchar.Length; i++) { tempchar[0] = Char.ToUpper(tempchar[0]); if(tempchar[i]==' '&&i+1<tempchar.Length) tempchar[i+1] = Char.ToUpper(tempchar[i+1]); } for (int i = 0; i < tempchar.Length; i++) { answer += tempchar[i]; } return answer; } }
'코딩테스트' 카테고리의 다른 글
C# 프로그래머스 Lv2 최솟값 만들기 (0) 2020.08.19 C# 프로그래머스 Lv2 행렬의 곱셈 (0) 2020.08.19 C# 프로그래머스 Lv2 카펫 (0) 2020.08.19 C# 프로그래머스 Lv2 가장 큰 수 (0) 2020.08.19 C# 프로그래머스 Lv2 스킬트리 (0) 2020.08.19