다희의 코딩 성장일기

[프로그래머스] level1. 이상한 문자 만들기 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. 이상한 문자 만들기 (자바 JAVA)

ilmiodiario 2021. 8. 20. 14:17

[ 문제 ]  [프로그래머스] level1. 이상한 문자 만들기 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12930

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr


# 접근 방법 및 풀이 

 

  • 모든 문자를 소문자로 바꿔주고 split을 사용해 String arr[] 배열로 바꿔준다.
  • String 배열에는 하나의 String 단어가 들어가 있기 때문에 모든 단어를 살펴보면서, 해당 단어의 짝수 idx는 대문자, 홀수 idx는 소문자로 StringBuilder에 더해준다.
  • 한 단어가 끝나면, StringBuilder에 " " 공백을 더해주고, 맨 마지막에 공백이 추가로 들어있기때문에 맨 마지막 공백은 제거하고 반환한다.
  • 나머지는 코드참조

# 주의할 점 

 

  • 문자가 소문자로만 들어오지 않는다. 대소문자 섞어서 들어올 수도 있음.
  • split 쓸 때 주의해야한다. 각 단어가 공백을 기준으로 들어오지만, 그 단어의 길이에 대한 명시는 없다. 단어의 길이가 0인게 공백을 기준으로 들어올 수도 있다.
  • 따라서 "abc       " 이런형태가 들어올 수 있다. 그냥 split를 쓰면 String s [] = {abc}; 이렇게 들어가겠지만 공백을 기준으로 단어를 잘라야하므로 String s [] = {abc, , , , }; 이런형태로 들어오게 해야한다. 
  • s.split(" ", -1); split메소드의 limit을 -1 음수로 주면 모든 구분값을 나눠 배열에 반환한다.

 

JAVA 코드
class Solution {
    public String solution(String s) {
        s = s.toLowerCase();
        String sarr[] = s.split(" ", -1);
        StringBuilder sb = new StringBuilder();
        for(int i = 0 ; i < sarr.length; i++){
            for(int j = 0 ; j < sarr[i].length(); j++){
                char c = sarr[i].charAt(j);
                if(j%2 == 0){
                    c -=32;
                }
                sb.append(c);
            }
            sb.append(" ");
        }
        String answer = sb.toString();
        return answer.substring(0, answer.length()-1);
    }
}

 

 

REVIEW

Comments