본문 바로가기

코딩테스트

이상한 문자 만들기 JAVA 프로그래머스 코딩테스트

 

이상한 문자 만들기 JAVA

 

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

 

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

 

프로그래머스

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

programmers.co.kr


 

대소문자 변경하는 것 보다.. 공백 처리가 무지 어려웠다. ㅠㅠ

class Solution {
    public String solution(String s) {
        
        StringBuilder answer = new StringBuilder();
        String[] words = s.split(" ", -1);
        
        int wordIndex = 0;
       
        for(String word : words){
            if(!word.isEmpty()){ answer.append(convertWord(word)); }
            if(wordIndex < words.length - 1){ answer.append(" "); }
            wordIndex++;
        }
        
        return answer.toString();
    }
    
    private String convertWord(String word){
        StringBuilder result = new StringBuilder();
        for(int i=0; i<word.length(); i++){
            char c = word.charAt(i);
            result.append(i%2 == 0 ? Character.toUpperCase(c) : Character.toLowerCase(c));
        }
        return result.toString();
    }
}

좋아요 수가 많은 다른 사람의 풀이 : 오... 엄청 간결하다 !!

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;
  }
}

 

레벨0을 다 풀고..자신감이 생겨서 레벨 1도 계속해서 풀어보는 중인데, 풀수록.. 느껴진다. 단순한것처럼 위장했지만 한번 꼬아진 문제들이다..!! 그래도.. 이번달안에는 레벨1 다 풀어보고싶었는데.. 이번달에 다 못하더라도 꾸준히 한다는 것이 중요하니께..!!! 😆

728x90
300x250