Algorithm
[프로그래머스/Level2] JadenCase 문자열 만들기
haehyun
2022. 1. 12. 17:03
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/12951?language=java
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건
programmers.co.kr
풀이
문장은 문자와 공백만으로만 이루어져있댔으나, 첫 문자가 숫자일 수 있고 공백이 연속으로 여러 개 있을 수도 있음. split("") 과 같이 문자열을 분리하면 "The tree" 와 같은 문자열은 {"T", "h", "e", " ", " ", " ", "t", "r", "e", "e"} 와 같은 String배열을 반환하고, split(" ")와 같이 공백을 기준으로 분리하면 {"The", " ", " ", " tree"} 와 같은 String배열이 반환된다.
- 전체 문자열을 소문자로 변환한다.
- 각 문자열의 문자를 하나씩 체크한 뒤, StringBuffer에 추가한다.
- 공백일 경우 => 그대로 추가, 이 뒤에 나오는 공백이 아닌 문자는 첫 번째 문자이다.
- 첫 번째 문자일 경우 => 대문자 변환 추가, 이 뒤에 나오는 문자는 첫번째 문자가 아니다.
- 첫 번째 문자가 아닐 경우 => 그대로 추가
- StringBuffer를 String타입으로 반환한다.
코드
1. toCharArray() 메서드로 char타입으로 분리하는 방법
class Solution {
public String solution(String s) {
StringBuffer sb = new StringBuffer(); // JadenCase 결과 문자열
boolean isFirst = true; // 첫번째 문자 여부
s = s.toLowerCase(); // 전체 소문자 변환
for (char ch : s.toCharArray()) {
if (ch == ' ') {
isFirst = true;
} else if (isFirst) {
ch = Character.toUpperCase(ch); // 대문자 변환
isFirst = false;
}
sb.append(ch); // 문자 추가
}
return sb.toString();
}
}
2. split() 메서드로 String타입으로 분리하는 방법
class Solution {
public String solution(String s) {
StringBuffer sb = new StringBuffer();
boolean isFirst = true;
String[] arr = s.toLowerCase().split("");
for (String str : arr) {
sb.append(isFirst ? str.toUpperCase() : str);
isFirst = str.equals(" ") ? true : false;
}
return sb.toString();
}
}
728x90