반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[프로그래머스/Java] 코딩테스트 Lv.0 배열 원소의 길이 본문

。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★/나의 코딩테스트

[프로그래머스/Java] 코딩테스트 Lv.0 배열 원소의 길이

yeonee 여니 2023. 9. 23. 19:09
728x90
반응형
SMALL

안녕하세요.
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://jungdami-ing.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%9D%98-%EC%A0%95%EC%84%9D-14-%EB%9E%8C%EB%8B%A4%EC%99%80-%EC%8A%A4%ED%8A%B8%EB%A6%BC-%E2%85%A1

 

자바의 정석 14. 람다와 스트림 Ⅱ

2. 스트림 (stream) 2.1 스트림이란? 스트림 (Stream) - 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터 소스를 추상화하였다는 것은, 데이터 소스가

jungdami-ing.tistory.com

https://lasbe.tistory.com/74#google_vignette

 

[Java/자바] 스트림(Stream) 사용법

스트림(Stream) 스트림은 java8부터 추가된 배열이나 컬렉션의 요소(List, Map, Set)들을 더 편리하게 가공하고 처리하도록 해주는 반복자입니다. 람다식 사용과 연산 과정에서 불필요한 변수를 남기지

lasbe.tistory.com

https://peonyf.tistory.com/entry/Stream

 

[JAVA] Stream

사용이유 for과 Iterator의 경우 코드가 너무 길고 알아보기 힘들며 재사용이 떨어짐, 데이터소스마다 다른 방식으로 다뤄야 한다는 문제점도 있음(Collection.sort(), Arrays.sort()) 이런 문제를 해결하기

peonyf.tistory.com

 

728x90
반응형
LIST