프로그래머스 - 코딩테스트

[Java][프로그래머스] - LVL. 0 배열원소의 길이

Denny Code 2023. 1. 22. 21:17


정답 1

int 배열을 props 로 들어오는 String배열의 길이만큼 초기화해주고 향상된 for문을 통해서 각각의 String 요소들의 글자수를 구해서 초기에 초기화해줬던 int배열에 넣어줬다.

class Solution {
    public int[] solution(String[] strlist) {
        int[] resultArr = new int[strlist.length];
        int i = 0;
        for(String n : strlist) {
            resultArr[i] = n.length();
            i++;
        }
        return resultArr;
    }
}

그 결과 정답은 맞았다.

 

하지만 분명 더 간단한 방법이 존재할것같아 다른사람들의 답을 확인해 보았다.

 


정답 2

import java.util.Arrays;

class Solution {
    public int[] solution(String[] strlist) {
        int[] result = Arrays.stream(strlist).mapToInt(str -> str.length()).toArray();

        return result;
    }
}

다른 사람의 답을 참고하여 Arrays.stream 에 mapToInt 라는 기능을 사용해보았다.

mapToInt 는 String 배열내 요소들을 하나하나 가져와 내부에 선언된 특정 로직을 거쳐 int 배열로 재조립 가능하게 만들어주는 역할을 하는것 같다. 내부 로직은 람다식(Arrow Function) 으로 처리 한다.

 

아래는 내가 참고한 답이다.


정답 3

import java.util.Arrays;

class Solution {
    public int[] solution(String[] strList) {
        return Arrays.stream(strList).mapToInt(String::length).toArray();
    }
}

String::length 라는 기능이 참 재미있다. 기억을 더듬어 stream 에서 사용되는 기능들 내에 람다식을 사용할 수 있다고 알고있어 정답 2 처럼 적어봤는데 작동이 되서 기분이 좋았다.

 

Array.stream 이녀석,,, 좋다

 

Deep 한 공부가 필요해 보인다.