728x90
[문제링크]
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public String solution(String s) {
s = s.toLowerCase();
String answer = "";
String temp = " " + s;
for(int i = 1; i < temp.length(); i++){
if(temp.charAt(i-1) == ' '){
answer += Character.toUpperCase(temp.charAt(i));
}
else {
answer += temp.charAt(i);
}
}
return answer;
}
}
이 문제는 공백을 기준으로(제일 처음 문자 제외)
다음 문자를 대문자로 바꾼 후,
나머지 문자열을 소문자로 바꿔 반환하면 되는 문제이다.
접근법
- 문자열 s를 모두 소문자로 변환한다.
- 새로운 변수에 공백과 함께 문자열 s를 넣는다. (처음에 공백을 넣어줌으로써 제일 처음 문자를 대문자로 변환할 수 있다.)
- charAt() 메소드를 사용하여 temp 문자열을 하나씩 읽는다.
- 이전 문자가 공백일 때, 그 다음 문자를 대문자로 변환하고 answer 변수에 넣는다.
- 그렇지 않으면, 이미 소문자로 모두 변환을 해줬으므로 그냥 넣는다.
처음에는 이전 문제처럼 공백을 기준으로 나누어
배열에 넣어서 해결하려고 했으나 코드가 너무 길어지고,
생각처럼 되지 않았다.
지금처럼 작성하는 코드가 더 길다고 생각했으나
생각보다 길지 않았다.
하지만, 다른 문제 풀이를 보니
내가 간단하게 푸는 거까지 생각 못한 것 같다.
(제출 후 다른 사람의 풀이를 보시길 바란다.)
또한, 위의 방법에서 어차피 else문을 작성할 것이므로
처음에 모두 소문자로 변환하는 부분을 지우고
else문에 소문자로 변환하는 것을 추가하는 것이 더 깔끔할 것 같다.
그리고 문제를 풀며 자주 실수했던 부분을 다시 정리하려고 한다.
바로 length와 length() 차이이다.
length
- 데이터타입: 배열
- 상수
- 배열이 선언될 때 최초의 길이
- 배열에 저장된 요소 수 ❌
length()
- 데이터타입: 문자열
- 메소드
- String에서 호출되면 해당하는 문자 수 리턴
즉, temp는 String 타입 문자열이므로 length() 메소드를 사용한 것이다.
728x90
'💻코딩 > 💡Programmers' 카테고리의 다른 글
[프로그래머스|JAVA] 이진 변환 반복하기 | Integer.toBinaryString() (0) | 2025.02.05 |
---|---|
[프로그래머스|JAVA] 올바른 괄호 (2) | 2025.01.24 |
[프로그래머스|JAVA] 최솟값 만들기 (0) | 2025.01.17 |
[프로그래머스|JAVA] 최댓값과 최솟값 | String -> int 타입 변환 (0) | 2025.01.17 |
[프로그래머스|JAVA] 문자열 내 p와 y의 개수 | charAt() (0) | 2025.01.14 |