자바 알고리즘 문제

왼쪽 오른쪽

쿠키키키키 2024. 5. 1. 21:56

문자열 리스트 str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다. str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 "r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. "l"이나 "r"이 없다면 빈 리스트를 return합니다. 제한사항 1 ≤ str_list의 길이 ≤ 20 str_list는 "u", "d", "l", "r" 네 개의 문자열로 이루어져 있습니다.

import java.util.ArrayList;
import java.util.List;

class Solution {
    public String[] solution(String[] str_list) {
        Boolean lrExist=false;
        for(String str : str_list){
            if(str.equals("l") || str.equals("r")){
                lrExist=true;
            }
        }
        if(!lrExist){
            String[] answer=new String[0];
            return answer;
        }

        List<String> li = new ArrayList<>();

        Boolean pass = true; //r 이 더 먼저 나왔을 때 l if 문으로 안빠지게
        // l 이나 r if 문 한번만 거치게 하도록
        for (int i = 0; i < str_list.length; i++) {
            if(str_list[i].equals("l") & pass){
                break;
            }
            li.add(str_list[i]);
            if(str_list[i].equals("r") & pass){
                pass=false;
                li.clear();
            }
        }

        String[] answer=new String[li.size()];

        for (int i = 0; i < li.size(); i++) {
            answer[i]=li.get(i);
        }
        return answer;
    }
}

 

문제에 있는 조건대로 l 과 r 이 나오는 경우를 나눠서 if 문을 만들어주고 대신 

저 조건은 딱 한번씩만 적용되야 하므로 논리변수를 통해서 한번 실행되면 걸러지게 해주었다.

그리고 처음에 l 과 r 이있는지 판별해주고 없으면 빈 배열을 반환해주면 된다.!

'자바 알고리즘 문제' 카테고리의 다른 글

저주의 숫자 3  (0) 2024.05.03
무작위로 k개의 수 뽑기  (0) 2024.05.02
잘라서 배열로 저장하기  (0) 2024.04.30
리스트 자르기  (0) 2024.04.30
가까운 수  (0) 2024.04.28