프로그래머스 - 코딩테스트
[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 한 공부가 필요해 보인다.