
🧫 문제 분석
✔️ 출처
📖 문제

핵심
공백문자가 연속해서 나올 수 있다.
첫 문자는 대문자 그외에는 소문자
🔅 문제 풀이
처음 시도
import java.util.*;
class Solution {
public String solution(String s) {
s += "#";
String[] str = s.split(" ");
char temp;
String answer = "";
for (int i = 0; i < str.length; i++) {
if (str[i].isBlank()) {
answer += " ";
continue;
}
temp = str[i].charAt(0);
if (97 <= temp && temp <= 122) {
answer += ((char)(temp-32) + str[i].substring(1).toLowerCase());
} else {
answer += str[i] ;
}
if (i < str.length) {
answer += " ";
}
}
return answer.substring(0, answer.length() - 2);
}
}
매우 부끄럽게도 왜 안되지 이해를 못했는데 직접 테스트 케이스를 만들다가 알게되었다...
if문에서 temp가 소문자일 때는 대문자로 바꾸고 뒤에 것을 tolowerCase로 갖다 붙이는데
정작 temp가 대문자이고 그 뒤에 문자열도 대문자일 때를 생각하지 못했다...
2차 시도 / 정답
class Solution {
public String solution(String s) {
s += "#";
String[] str = s.split(" ");
char temp;
String answer = "";
for (int i = 0; i < str.length; i++) {
// 기존 s 에서 공백 2개일때 answer에 공백 추가
// split(" ")을 하게되면 입력이 " a" 이렇게 연속 공백이면 " ", "a" 이런식으로 저장되기때문에 따로 공백을 추가해주었다.
if (str[i].isBlank()) {
answer += " ";
continue;
}
temp = str[i].charAt(0);
if (97 <= temp && temp <= 122) {
answer += ((char)(temp-32) + str[i].substring(1).toLowerCase());
} else {
answer += str[i].charAt(0) + str[i].substring(1).toLowerCase();
}
if (i < str.length) {
answer += " ";
}
}
return answer.substring(0, answer.length() - 2);
}
}

맞추긴 했는데 느리다. ㅠㅠ 문자열을 다루는 문제에 약하다.
문자열 문제를 좀 집중적으로 풀어볼 필요가 있다.
❗ 오답노트 / 필요한 지식
- 고민중인 것은 일단 무작정 풀기 or 최고의 효율을 생각해보고 풀기이다.
- 물론 무작정 풀기가 시간면에서 나을 수도 있으나 시험이 아니니 이럴때 효율적으로 풀다보면 무작정 풀때 효율적으로 풀던 방식이 습관적으로 작용하지 않을까 싶다. 그러니 최대한 효율성도 챙기자.
'programmers > Lv 2' 카테고리의 다른 글
행렬의 곱셈 (0) | 2024.06.27 |
---|---|
n^2 배열 자르기 (0) | 2024.06.27 |
H-Index (0) | 2024.06.27 |
영어 끝말잇기 (0) | 2024.06.27 |
카펫 (0) | 2024.06.27 |