본문 바로가기

코딩테스트/Programmers

[JAVA] JadenCase 문자열 만들기

< 내 풀이 >

import java.util.*;
class Solution {
    public String solution(String s) {
        StringBuilder sb=new StringBuilder(s);
        boolean isEmpty=false;
        
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)==' '){ // 빈 문자이면 
                isEmpty=true;
                continue;
            }
            else { // 빈 문자가 아니면 
                if(isEmpty){ // 앞에가 빈 문자였음 
                    sb.setCharAt(i,Character.toUpperCase(s.charAt(i))); //대문자로 바꾸기 
                    isEmpty=false; 
                }
                else { // 앞에 빈 문자 아니였음
                    if(i==0) // 가장 첫번째 글자이면 
                        sb.setCharAt(i,Character.toUpperCase(s.charAt(i))); //대문자로 바꾸기
                    else 
                     sb.setCharAt(i,Character.toLowerCase(s.charAt(i))); // 소문자로 바꾸기 
                }
            }
        }
        
        String answer=sb.toString(); // StringBuilder를 String으로 변환
        return answer;
    }
}

 

 

✏️ 풀이 과정

 

1. 빈 문자일 경우

:  isEmpty의 값을 true 로 변경

 

2. 빈 문자가 아닐 경우

- 앞에가 빈 문자였을 경우

  : 대문자로 바꾸기, isEmpty의 값을 false 로 변경

- 앞에 빈 문자가 아니였을 경우 

        - 맨 첫번째 글자일 경우 (앞에 공백 없었음) : 대문자로 바꾸기

        - 이외의 경우: 소문자로 바꾸기

 

 < 다른 사람의 풀이 >

class Solution {
  public String solution(String s) {
        String answer = "";
        String[] sp = s.toLowerCase().split("");
        boolean flag = true;

        for(String ss : sp) {
            answer += flag ? ss.toUpperCase() : ss;
            flag = ss.equals(" ") ? true : false;
        }

        return answer;
  }
}

 

🔻 String[] sp = s.toLowerCase().split(""); 를 수행했을 때 sp 배열의 상태

[3, p, e, o, p, l, e, , u, n, f, o, l, l, o, w, e, d, , m, e]

 

✍🏻 느낀점

 

 처음에 이 문제를 봤을 때, 되게 간단한 문제라고 생각했었는데 이 문제를 통해 배운 것이 많다. 

String은 불변이기 때문에 charAt 으로 접근해서 값을 못 바꾼다는 것을 이번에 새로 알게 됐다.

그리고 char 형을 toUpperCase 또는 toLowerCase 를 하기 위해서는 Character.toUpperCase(s.charAt(i)) 

이렇게 해야된다는 사실도 처음 배웠다.

 

 그동안 문제를 푸는 것에만 목적을 두고, 이러한 중요한 것들을 잘 몰랐던 것 같다. 이제라도 알게 됐으니 앞으로는

절대 잊지 않도록 기록해놔야겠다. 다른 사람들의 풀이를 보니 정말 간단하고 쉽게 푼 사람들이 많다.

위의 사람이 추천을 가장 많이 받았었는데 그럴만하다^.^ 나도 저렇게 깔끔한 코드를 작성할 수 있는 날이 오길,, 🔥

'코딩테스트 > Programmers' 카테고리의 다른 글

[JAVA] 숫자의 표현  (1) 2024.04.20
[JAVA] 이진 변환 반복하기  (1) 2024.04.18
[JAVA] 최솟값 만들기  (0) 2024.04.17
[JAVA] 올바른 괄호  (0) 2024.04.17
[JAVA] 붕대 감기  (0) 2024.04.09