ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] - 이상한 문자 만들기 (12930)
    알고리즘/프로그래머스 2024. 2. 27. 09:56

    📚 문제 - 12930

    문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.


    제한사항

    • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
    • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

    입출력 예

    • "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

    ⌨️ 작성한 코드

    class Solution {
        public String solution(String s) {
            // 주어진 문자열을 공백을 기준으로 분할하여 문자열 배열로 저장
            String[] strArr = s.split(" ", -1);
            StringBuffer sb = new StringBuffer();
    
            for(int i = 0; i < strArr.length; i++) {
                char[] charArr = strArr[i].toCharArray(); // 현재 단어를 문자 배열로 변환
    
                for(int j = 0 ; j < charArr.length ; j++) {
                    if(j % 2 == 0) // 짝수번째 문자는 대문자로
                        charArr[j] = Character.toUpperCase(charArr[j]);
                    else // 홀수번째 문자는 소문자로
                        charArr[j] = Character.toLowerCase(charArr[j]);
                }
                
                if(i != strArr.length - 1) // 마지막이 아닌 경우, 공백 포함하여 결과 문자열에 추가
                    sb.append(new String(charArr) + " ");
                else // 마지막 단어인 경우, 공백 추가하지 않고 결과 문자열에 추가
                    sb.append(new String(charArr));
            }	
            return sb.toString();
        }
    }

     

    ✅ 배운 점

    • split(): 주어진 구분자를 기준으로 문자열을 분할하고, 분할된 부분을 문자열 배열에 저장하는 매서드
      첫 번째 매개변수로는 구분자를 전달하고, 두 번째 매개변수는 분할된 문자열의 최대 개수를 지정
      두 번째 매개변수에 -1을 전달하면, 분할된 결과에 빈 문자열도 포함시키도록 지정됨
      일반적으로 이 값을 지정하지 않거나 양의 정수를 전달하면 빈 문자열이 생략됨
      String s = "  hello  world  ";
      String[] strArr = s.split(" ", -1);
      // 배열 strArr는 ["", "", "hello", "", "world", "", ""]로 저장됨
    • toCharArray(): 문자열을 문자 배열로 변환하는 메서드
      String str = "Hello";
      char[] charArray = str.toCharArray(); 
      // 배열 charArray는 ['H', 'e', 'l', 'l', 'o']로 저장됨
    • new String() 생성자와 toString() 메서드  
      • new String() 생성자: 주어진 문자 배열이나 다른 문자열을 이용하여 새로운 문자열 객체를 생성
        주로 문자 배열을 문자열로 변환하거나, 문자열을 복제하여 새로운 문자열을 생성할 때 사용
        만약 문자열을 문자 배열로 변환하고자 할 때는 new String(charArray)와 같이 사용가능
      • toString() 메서드: 객체를 문자열로 변환하는 메서드
        모든 자바 클래스는 
        Object 클래스를 상속하므로, toString() 메서드를 오버라이딩하여 해당 클래스의 객체를 문자열로 표현 가능

        따라서 toString() 메서드는 객체 자체를 문자열로 변환하는 데 사용되고, new String() 생성자는 주어진 데이터를 가지고 새로운 문자열 객체를 생성하는 데 사용됩니다. 만약 문자 배열을 문자열로 변환하고자 할 때는 new String(charArray)를 사용하면 됩니다.
Designed by Tistory.