Solution 1) 내 풀이
class Solution {
    public String[] solution(String[] strArr) {
        for (int i = 0; i < strArr.length; i++) {
            if (i % 2 == 0) {
                strArr[i] = strArr[i].toLowerCase();
            } else {
                strArr[i] = strArr[i].toUpperCase();
            }
        }
        return strArr;
    }
}
Solution 2) 다른 사람의 풀이
import java.util.Arrays;
import java.util.stream.IntStream;

class Solution {
    public String[] solution(String[] strArr) {
        return IntStream.range(0, strArr.length).mapToObj(i -> i % 2 == 0 ? strArr[i].toLowerCase() : strArr[i].toUpperCase()).toArray(String[]::new);
    }
}
코드 및 문제 리뷰

String  배열에서 홀수번째 요소들은 대문자로, 짝수번째 요소들은 소문자로 변환하여 배열을 반환하는 문제이다.

 

간단하게 반복문으로 풀이해봤으나 스트림의 활용도를 늘려가야할 것 같아 희표좌의 스트림도 참고로 가져와 봤다.

IntStream.range로 범위를 설정해준 뒤 mapToObj를 이용해 각각의 배열 요소에 다음을 시행한다.

i -> i % 2 == 0 ? strArr[i].toLowerCase() : strArr[i].toUpperCase()

mapToObj는 IntStream의 요소를 다른 데이터 타입으로 변환하기 위해 사용되며 현재는 int 타입에서 String 타입으로 변환 되는 모습이다.

이후 toArray(String[]::new)를 통해 다시 문자열로 변환 후 반환하는 모습이다.

 

IntStream.range(0, strArr.length).

mapToObj(i -> i % 2 == 0 ? strArr[i].toLowerCase() : strArr[i].toUpperCase().toArray(String[]::new);

+ Recent posts