코딩테스트 대비 프로그래머스 UI로 문제풀이 시도해보았습니다. 백준 UI랑 조금 달라서 쉬운 문제부터 풀어보았습니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12951
[나의 풀이1]
class Solution {
static String Jaden(String s){
String [] jadenArray = new String [s.length()];
jadenArray = s.split(" ");
String jaden = "";
String first = "";
System.out.println(jadenArray[0].length()-1);
for(int i=0;i<jadenArray.length;i++){
first = String.valueOf(jadenArray[i].charAt(0));
jaden = jaden + first.toUpperCase() + jadenArray[i].substring(1,jadenArray[i].length()).toLowerCase();
if (i!=jadenArray.length-1){
jaden += " ";
}
}
return jaden;
}
public String solution(String s) {
String jaden = Jaden(s);
return jaden;
}
}
입력값 String s 를 띄어쓰기 기준으로 split하여 배열에 저장한뒤 배열 각 인덱스의 첫번째 문자는 대문자로 그 이후 문자들은 substring 메서드를 활용하여 소문자로 바꾸어 연산하였습니다. 하지만 이 풀이는 시간초과가 발생하여 좀 더 빠른 코드로 수정하였습니다.🏃🏃🏃
[나의 풀이2]
class Solution {
static String Jaden(String s){
String jaden = "";
Boolean nextToBlank = true;
for(int i=0;i<s.length();i++){
if(String.valueOf(s.charAt(i)).equals(" ")){
nextToBlank = true;
jaden += s.charAt(i);
continue;
}
else if (nextToBlank){
jaden += String.valueOf(s.charAt(i)).toUpperCase();
}
else{
jaden += String.valueOf(s.charAt(i)).toLowerCase();
}
nextToBlank = false;
}
return jaden;
}
public String solution(String s) {
String answer = Jaden(s);
return answer;
}
}
위와 같이 입력값 String s 문자열을 순차적으로 돌며 띄어쓰기이면 스킵하고 띄어쓰기 바로 뒤 문자는 대문자로, 나머지 문자들은 소문자로 바꾸는 조건문을 통해 해결하였습니다.🐕🐕🐕
간단한 문제임에도 불구하고 여러 메서드들의 문법을 검색하는 과정 때문에 시간이 걸렸습니다. Java가 아니라 Python 이라면 좀 더 간단하게 구현되어 있는 형변환, 슬라이싱 등을 통해 훨씬 빠르게 풀 수 있을 거라고 생각합니다. 오늘 기점으로 코딩테스트 언어를 Python으로 바꾸어 준비하겠습니다.😭😭😭
감사합니다.