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

김아무개·2023년 3월 26일
0

프로그래머스

목록 보기
10/41

정말 간단한 문제인줄 알았는데 아니었다 🙄

다른사람 코드

프로그래머스 다른사람코드 - 첫번째

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

정말 똑똑해..!!
이 사람은
문자열을 배열로 모두 분해해서
배열의 인덱스를 모두 순회하며
단어만의 인덱스를 계산할 cnt 변수를 만들어 사용하였고
단어에서 짝수번째 인덱스엔 toLowerCase() 를, 홀수번째 인덱스에는 toUpperCase()를 사용해주었다.


내 코드

class Solution {
    public String solution(String s) {
        String answer = "";
        s = s.toLowerCase();

        int beforeSpace = -1;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ' ' || i == s.length() - 1) {
                int afterSpace = i;
                int idx = 0;
                for (int j = beforeSpace + 1; j <= afterSpace; j++) {
                    if (s.charAt(j) == ' ' || idx % 2 != 0) answer += s.charAt(j);
                    else answer += (char)(s.charAt(j) - ('a' - 'A'));
                    idx++;
                }
                beforeSpace = afterSpace;
            }
        }
        return answer;
    }
}

숨겨진 테스트에서
대소문자가 섞여있는 단어들과 어쩌면 공백만 있는 단어가 있을 수도 있음을 알아챈 후
작성해본 코드였다...
다른사람 코드가 훨씬 간결하고 읽기 좋고 실행시간도 훨씬 짧았다.
오늘도 많이 배워갑니다 🤓


처음 풀어본 날짜 : 23.03.26 ~ 28

profile
Hello velog! 

0개의 댓글