안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
🪅 나의 문제 풀이
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
String[] strArr = new String[] strlist;
strlist.split("");
for(int i=0; i<strArr.length; i++){
answer[i] = Integer.parseInt(strArr[i]);
}
return answer;
}
}
🧸 코드설명
String[] strArr에 strlist 를 split("")으로 나누어 준 뒤, 그 결과값을 strArr배열을 담아주려고 하였다.
그리고 strArr 배열의 길이만큼 반복문을 돌려준 뒤 int로 형변환 해준 뒤 answer값을 리턴해준다.
단순한거 같은데 꼬아서 생각해서 해결하기에 약간 시간이 걸렸다 ㅠㅠ
[ 테스트 통과 ]
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
for(int i=0; i<answer.length; i++){
answer[i] = strlist[i].length();
}
return answer;
}
}
[ 해결 방안 ]
- int타입인 배열 answer 변수를 초기화 해주고, strlist의 길이만큼 변수의 크기를 지정해줍니다.
- answer 배열의 길이만큼 반복문을 돌려줍니다.
- int.length() 로 문자열의 갯수를 반환할 수 있었습니다.
strlist[i].length()를 사용하여 strlist의 i의 위치에있는 값의 길이를 answer에 대입합니다.
✨ 다른 풀이
풀이1)
이런식으로 한 줄 짜리 코드를 바로 접근하는게 안될 때 한 번 걸쳐서 생각하는 방식이 좋기도 하더라구요.\
풀이 2)
풀면서 문제 자체를 건드리는 방법은 잘 못하는 편이었는데, 이런식으로 ArrayList<Integer> 타입의 answer이라는 ArrayList를 생성하는 방식도 놀랍더라구요~ str에 strlist 요소를 반복하여 대입해주며 str의 길이를 구하여 answer에 추가해주고 그 answer을 리턴해준 방식!
풀이 3)
이렇게까지 온 부분은 stream을 자주 접하면서 처음보는 형식인 코드였어요. 코드 분석이 궁금해서 좀 자세히 찾아보았습니다.
stream은 Arrays.stream()에 () 안에 인자로 배열을 입력하면 배열을 순회하는 stream 객체를 만들 수 있습니다. stream객체를 생성하여 주고, 스트림을 intStream으로 변환해주는 메서드인 mapToInt를 사용하였습니다. 스트림 요소인 (String::length)를 int로 매핑해줍니다. 그리고 결과값을 반환해줍니다.
https://lasbe.tistory.com/74#google_vignette
https://peonyf.tistory.com/entry/Stream
'。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★ > 나의 코딩테스트' 카테고리의 다른 글
[프로그래머스/Java] 코딩테스트 Lv.0 각도기 (0) | 2023.09.24 |
---|---|
[프로그래머스/Java] 코딩테스트 Lv.0 삼각형의 완성조건 (1) (1) | 2023.09.24 |
[프로그래머스/Java] 코딩테스트 Lv.0 배열 자르기 (0) | 2023.07.29 |
[프로그래머스/Java] 코딩테스트 Lv.0 짝수 홀수 개수 (0) | 2023.07.18 |
[프로그래머스/Java] 코딩테스트 Lv.0 배열 뒤집기 (0) | 2023.07.17 |