알고리즘/Java

[JAVA] 프로그래머스 이상한 문자 만들기

유리코딩 2021. 11. 12. 19:05
반응형

알고리즘

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


 

1. 문제

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

 

 

2. 풀이

  • 역시 어렵지 않은 문제였는데 coutn를 더해서 다음 순서로 넘기는게 개인적으로 머릿속에서 확떠오르지 않는다..
  • 이 중요한 점은 문자열의 인덱스 순서가 아니라 단어의 공백을 기준으로 짝/홀을 구분하여 대문자, 소문자로 바꾼다
  • for문 안쪽에서 sout를 찍어보면 주석과 같이 '1 2 3 0 1 2 3 4 5 0 1 2 3 4 5' 숫자가 순서대로 찍히고 이 순서대로 대소문자 변환 
class Solution {
    public String solution(String s) {
        String answer = "";

        String str[] = s.split("");
        String space = " ";
        int cnt = 0;

        for(int i = 0; i < str.length; i++){
            if(str[i].equals(space)){
                cnt = 0; // 공백일 때 여기서 0부터 다시 counting
            }else{
                if(cnt % 2 == 0){
                    cnt++;
                    str[i] = str[i].toUpperCase();
                }else{
                    cnt++;
                    str[i] = str[i].toLowerCase();
                }
            }
            
            System.out.println(cnt);  // 1 2 3 0 1 2 3 4 5 0 1 2 3 4 5
            answer += str[i];
        }

        System.out.println(answer);

        return answer;
    }
}

 

[다른사람의 풀이]

3항 연산자를 이용해서 짧게 푼 방법

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;
  }
}
반응형