울음참고 개발공부
728x90

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/181890

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 


 

 

import java.util.*;

class Solution {
    public String[] solution(String[] str_list) {
        String[] answer = new String[str_list.length]; 
        int answerIndex = 0; 
        
        List<String> strList = new ArrayList<>(Arrays.asList(str_list));

        for (int i = 0; i < str_list.length; i++) {
            if (str_list[i].equals("l")) {
                if( i != 0){
                    for (int j = 0; j < i; j++) {
                        answer[answerIndex] = str_list[j];
                        answerIndex++;
                    }
                    return Arrays.copyOf(answer, answerIndex);
                }else {
                    return new String[0];
                }
            }else if (str_list[i].equals("r")) {
                if(i != str_list.length-1){
                    for(int j = i+1; j<str_list.length; j++) {
                        answer[answerIndex] = str_list[j];
                        answerIndex++;
                    }
                    return Arrays.copyOf(answer, answerIndex);
                }else{
                    return new String[0];
                }
            }else if (!strList.contains("l") && !strList.contains("r")){
                return new String[0];
            }
        }
        return Arrays.copyOf(answer, answerIndex);
    }
}

 


 

 

경우의 수를 일일이 따져가며 푼 문제.

 

다른 사람의 풀이를 보니 Arrays.copyOf( ) 메서드를 좀 더 잘 사용했더라면 더욱 짧게 끝낼 수 있었던 듯 

 

 


 

 

Arrays.copyOf() 

 

  • 자바에서 배열을 복사하고 새로운 길이로 조정하는데 사용되는 메서드
  • 기존 배열의 내용을 새 배열로 복사하거나, 배열의 크기를 늘리거나 줄일 수 있음

 

 

 

public static <T> T[] copyOf(T[] original, int newLength)

 

  • original : 복사할 배열
  • newLength : 새 배열의 길이 

 

 

예시 ) 

int[] originalArray = {1, 2, 3, 4, 5};
int[] newArray = Arrays.copyOf(originalArray, 7);
// newArray = {1, 2, 3, 4, 5, 0, 0}

 

 

Arrays.copyOf() 의 반환형 ?

Arrays.copyOf(배열,길이) 의 반환형은 void 이기 때문에 반환시 주의해야한다. 

 

 

 

 

 

Arrays.copyOfRange() 

 

public static <T> T[] copyOfRange(T[] original, int from, int to)

 

  • original : 복사할 배열
  • from : 복사를 시작할 인덱스(포함)
  • to : 복사를 끝낼 인덱스(미포함) 

 

*반환값 : 복사된 요소들을 포함하는 새로운 배열 반환 

 

예시 ) 

int[] originalArray = {1, 2, 3, 4, 5};
int[] newArray = Arrays.copyOfRange(originalArray, 1, 4);
// newArray = {2, 3, 4}

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!