1. 문제 설명
2. 나의 풀이
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
int index = 0;
for(int i = 0; i < s.length(); i++)
{
if(s.charAt(i) == ' ')
{
sb.append(" ");
index = 0;
continue;
}
if(index % 2 == 0) sb.append(Character.toString(s.charAt(i)).toUpperCase());
else sb.append(Character.toString(s.charAt(i)).toLowerCase());
index ++;
}
return sb.toString();
}
}
StringBuilder를 이용하여 매번 String 객체를 생성하지 않도록 함
s 문자열을 charAt 으로 한글자씩 떼어 공백일때는 sb에 공백을 붙이고, 인덱스를 초기화 한 후 다음 반복으로 넘어가도록
공백이 아니면 짝수일때 대문자, 홀수일때 소문자
개선할 점 =>
1. Character에도 toUpper가 있음
Character.toString(s.charAt(i)).toUpperCase() => Character.toString(Character.toUpperCase(s.charAt(i)))
2. 반복문 시작 전 변수를 바로 toUpperCase나 LowerCase를 사용하여 형식을 맞추어 놓으면, 조건문에서 하나만 변환해도 됨
3. 다른 사람의 풀이
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
String[] array = s.split("");
for(String ss : array) {
cnt = ss.contains(" ") ? 0 : cnt + 1;
answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase();
}
return answer;
}
}
입력받은 단어를 한글자씩 배열에 집어넣고, ss가 무엇인지에 따라서 answer에 추가하는 방식
class Solution {
public String solution(String s) {
String answer;
answer = s.toUpperCase();
char[] chars = answer.toCharArray();
//앞문자가 대문자라면 소문자로 치환
for (int i = 1; i < chars.length; i++) {
if (62 <= chars[i - 1] && chars[i - 1] <= 90) {
chars[i] = Character.toLowerCase(chars[i]);
}
}
answer = String.valueOf(chars);
return answer;
}
}
이것도 멋지다 그냥 앞 문자가 대문자면 됨.. 공백 짝수 홀수 따질 필요가 없다.
'코테 > java' 카테고리의 다른 글
[프로그래머스][java] lv 1 최소직사각형 (0) | 2025.01.17 |
---|---|
[프로그래머스][java] lv 1 월간 코드 챌린지 시즌1 3진법 뒤집기 (1) | 2025.01.15 |
[프로그래머스][java] lv 1 부족한 금액 계산하기 (0) | 2025.01.09 |
lv 1 정수 내림차순으로 배치하기 (2) | 2024.12.20 |
[프로그래머스][java] lv 0 중복된 문자 제거 (0) | 2024.12.02 |