728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
boolean first = true; // 단어인지 확인
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
// 공백인지 판별하기
if(c == ' '){
// 공백인 경우
sb.append(c);
first = true;
}
else{
// 공백 아닌 경우
if(first){
// 첫 단어인 경우 > 첫 번째만 대문자
sb.append(Character.toUpperCase(c));
first = false;
}
else{
// 나머지 소문자
sb.append(Character.toLowerCase(c));
}
}
} //for문 끝
return sb.toString();
}
}
#StringBuilder()
문자열 변경 > 다시 붙여야할 때 StringBuilder() 사용하기
그냥 String은 불변이라 문자열 붙일 때마다 새로운 객체 생성+복사함 > 반복적이면 성능 안좋아짐
StringBuilder는 가변이라 내부 버퍼에서 계속 추가
#공백 기준으로 나누면 안되는 이유
제한 조건 '공백문자가 연속해서 나올 수 있음' 때문에 아래와 같이 문제 발생
" hello world ".split(" ");
→ ["", "", "hello", "world"]
문제 조건에 공백 1개만 존재할 경우에는 아래처럼 split(" ")으로 토큰 분리 가능함
for (String token : s.split(" ")) {
token = token.substring(0,1).toUpperCase()
+ token.substring(1).toLowerCase();
}
#char, String 문법 차이
char 공백문자 비교할 때는 " "가 아닌 c == ' ' 작은 따옴표 사용해야함
'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 다음 큰 숫자 : Java (0) | 2026.01.30 |
|---|---|
| [Lv.2] 이진 변환 반복하기 : Java / 이진법 변환 함수 (0) | 2026.01.30 |
| [Lv.1] k번째 수 : Java (0) | 2025.12.14 |
| [Lv.2] 전화번호 목록 : Java (0) | 2025.12.13 |
| [Lv.3] 여행 경로 : Java (0) | 2025.10.18 |