[프로그래머스] 코딩테스트 연습 - 연습문제 Level 1 이상한 문자 만들기

uoahy·2021년 9월 27일
0

Solution.java

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] strings = s.split(" ", -1);
        
        for (int i = 0; i < strings.length; i++) {
            char[] tmp = strings[i].toCharArray();
            for (int j = 0; j < tmp.length; j += 2)  {
                if ('a' <= tmp[j] && tmp[j] <= 'z') tmp[j] -= 32;
            }
            for (int j = 1; j < tmp.length; j += 2)  {
                if ('A' <= tmp[j] && tmp[j] <= 'Z') tmp[j] += 32;
            }
            strings[i] = new String(tmp);
        }
        
        StringBuilder sb = new StringBuilder(strings[0]);
        
        for (int i = 1; i < strings.length; i++) {
            sb.append(" ");
            sb.append(strings[i]);
        }
        
        answer = sb.toString();
        
        return answer;
    }
}

split의 사용법에 대해서 더 배울 수 있었던 문제였다.

s.split(" ")을 하면 "Hello "와 같이 뒤에 공백이 남아있는 경우 공백을 무시해버리지만

s.split(" ", -1)처럼 인자값으로 음수를 같이 넘겨주면 무시하는값 없이 모든 구분값을 나눠서 준다.


Solution.java (수정)

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] strings = s.split(" ", -1);
        
        for (int i = 0; i < strings.length; i++) {
            char[] tmp = strings[i].toCharArray();
            for (int j = 0; j < tmp.length; j += 2) tmp[j] = Character.toUpperCase(tmp[j]);
            for (int j = 1; j < tmp.length; j += 2) tmp[j] = Character.toLowerCase(tmp[j]);
            strings[i] = new String(tmp);
        }
        
        StringBuilder sb = new StringBuilder(strings[0]);
        
        for (int i = 1; i < strings.length; i++) {
            sb.append(" ");
            sb.append(strings[i]);
        }
        
        answer = sb.toString();
        
        return answer;
    }
}

자바에서 toUpperCase(), toLowerCase()가 String 클래스에만 있는줄 알았는데

Character에도 있다는걸 알고 수정했다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글