https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제
- 입력으로 문자열 s ( 1 <= s.length() <= 200 ) 가 입력으로 들어옴.
- 첫 문자가 대문자가 아니면(소문자라면) 대문자로 바꾸고, 첫 문자가 아닌데 대문자라면 소문자로 바꾼다.
완성 코드
class Solution {
public String solution(String s) {
String answer = "";
if (s.length() == 1 && Character.isLowerCase(s.charAt(0))) {
s = s.toUpperCase();
} else {
for (int i = 0; i < s.length() - 1; i++) {
if (i == 0 && Character.isLowerCase(s.charAt(i))) {
s = s.substring(0, i) + Character.toString(s.charAt(i)).toUpperCase() + s.substring(i + 1);
}
if (s.charAt(i) == ' ' && s.charAt(i + 1) != ' ' && Character.isLowerCase(s.charAt(i + 1))) {
s = s.substring(0, i + 1) + Character.toString(s.charAt(i + 1)).toUpperCase() + s.substring(i + 2);
}
if (s.charAt(i) != ' ' && s.charAt(i + 1) != ' ' && Character.isUpperCase(s.charAt(i + 1))) {
s = s.substring(0, i + 1) + Character.toString(s.charAt(i + 1)).toLowerCase() + s.substring(i + 2);
}
}
}
answer = s;
return answer;
}
}
사실 처음에 첫 문자만 대문자로 바꾸면 되는 줄 알고 했는데 틀려서 고치다가 보니 코드가 조금 길어졌다.
마지막엔 18번 하나만 틀려서 뭔가 했는데 문자열 길이가 1일 때를 고려하지 않아서 그런 거였다.
또 다르게 만들어본 코드
import java.util.Arrays;
class Solution {
public String solution(String s) {
String answer = "";
String[] temp = s.split("");
System.out.println(Arrays.toString(temp));
if (s.length() == 1 && Character.isLowerCase(s.charAt(0))) {
temp[0] = temp[0].toUpperCase();
} else {
for (int i = 0; i < s.length() - 1; i++) {
if (i == 0 && Character.isLowerCase(temp[i].charAt(0))) {
temp[i] = Character.toString(temp[i].charAt(0)).toUpperCase();
}
if (s.charAt(i) == ' ' && s.charAt(i + 1) != ' ' && Character.isLowerCase(s.charAt(i + 1))) {
temp[i+1] = Character.toString(temp[i + 1].charAt(0)).toUpperCase();
}
if (s.charAt(i) != ' ' && s.charAt(i + 1) != ' ' && Character.isUpperCase(s.charAt(i + 1))) {
temp[i+1] = Character.toString(temp[i + 1].charAt(0)).toLowerCase();
}
}
}
answer = String.join("", temp);
return answer;
}
}
문자열을 문자열 배열로 바꾸어서 해당 문자열 배열 위치에서 바로 꺼내 고쳐 넣어 문자열 배열 자체의 원소를 수정하는 방식이다.
'프로그래머스 문제 풀이 > 프로그래머스 (JAVA)' 카테고리의 다른 글
JAVA 프로그래머스 Lv.3 단어 변환 (1) | 2024.12.23 |
---|---|
JAVA 프로그래머스 Lv.2 이진 변환 반복하기 (0) | 2024.12.22 |
JAVA 프로그래머스 Lv.2 최솟값 만들기 (1) | 2024.12.21 |
JAVA 프로그래머스 Lv.3 등굣길 (0) | 2024.12.19 |
JAVA 프로그래머스 Lv.3 정수 삼각형 (1) | 2024.12.17 |