Java

프로그래머스 : 이상한 문자 만들기

openDeveloper 2023. 3. 23. 04:05

https://school.programmers.co.kr/learn/courses/30/lessons/12930#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이 접근법 : 

1) input 값이 String으로 들어와 split() 함수를 사용하여 단어의 index가 홀수,짝수에 따라 대문자, 소문자로 나누려고 했으나 단어 사이에 공백이 여러개 있을 경우 문제가 풀리지 않아 Char Array 형태로 바꿈

2) Char Array로 바꾸어 foreach 문으로 char를 하나씩 가져와 공백이면 cnt를 0으로 초기화 하고 아닐 경우에 홀수, 짝수에 따라 대문자 소문자로 바꾸어주어, StringBuilder에 하나씩 붙여서 마지막에 출력함.

class Solution {
    public String solution(String s) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        boolean isWord = false;
        int cnt = 0;
        
        char[] sChar = s.toCharArray();
        
        for(char c : sChar){
            if(c == ' '){
                cnt = 0;                
            }else{
                if(cnt % 2 == 0){                    
                    c = String.valueOf(c).toUpperCase().toCharArray()[0];
                }else{
                    c = String.valueOf(c).toLowerCase().toCharArray()[0];
                }
                cnt++;                
            }
            sb.append(c);                              
        }       
        answer = sb.toString();        
        return answer;
    }
}

아래 코드는 답안에 좋아요가 많은 코드로 문장 -> word -> char 로 나누어 주면서 " " 이면 cnt = 0 으로 초기화 아니면 +1 해주면서 하나씩 붙이고 있다. 내 코드에서는 char[] -> String[] 으로 바꾸고, 홀짝 if 문에서 수정을 좀 하면 될듯..

class Solution {
  public String solution(String s) {

        String answer = "";
        int cnt = 0;
        String[] array = s.split("");

        for(String ss : array) {
            cnt = ss.contains(" ") ? 0 : cnt + 1;
            answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase(); 
        }
      return answer;
  }
}