본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 왼쪽 오른쪽

by nam_ji 2024. 8. 2.

왼쪽 오른쪽

문제


테스트 (인텔리제이)

  • for문을 str_list의 크기만큼 순회하도록 합니다.
  • 안에서 if문으로 str_list의 원소가 l이면 Arrays 클래스의 copyOfRange 메서드를 이용하여 l 이전의 문자열 들을 answer에 복사하도록 합니다.
  • else if문을 사용하여 l이 아닌 r이라면 똑같이 Arrays 클래스의 copyOfRange 메서드를 사용하지만 이번에는 i 값에 + 1을 더한 위치에서 끝까지의 문자열 배열을 answer에 복사하도록 하면 됩니다.
  • copyOfRange 메서드는 내가 선택한 배열의 원하는 위치를 지정하여 똑같이 복사할 수 있습니다.
    copyOfRange(복사할 배열, 시작 위치, 마지막 위치)
    여기서 주의할 점은 마지막 위치의 인덱스 번호는 포함하지 않습니다.
package com.namji.codingtest;

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

public class 왼쪽_오른쪽 {
  public static void main(String[] args) {
    /*
    문자열 배열 str_list가 매개변수로 주어집니다.
    str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다.
    str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면
    해당 문자열 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를,
    str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "r"이라면
    해당 문자열 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를
    출력하는 문제입니다. 단, "l"과 "r"이 없다면 빈 배열을 출력합니다.

    입출력 예
    str_list	            result
    ["u", "u", "l", "r"]	["u", "u"]
    ["l"]	                []

    입출력 설명
    #1
    "r"보다 "l"이 먼저 나왔기 때문에 "l"의 왼쪽에 있는 문자열들을 담은 리스트인 ["u", "u"]를 return합니다.
    #2
    "l"의 왼쪽에 문자열이 없기 때문에 빈 리스트를 return합니다.
     */
    String[] str_list = {"u", "u", "l", "r"};
    String[] answer = {};
    for (int i = 0; i < str_list.length; i++) {
      if (str_list[i].equals("l")) {
        answer = Arrays.copyOfRange(str_list, 0, i);
        break;
      } else if (str_list[i].equals("r")) {
        answer = Arrays.copyOfRange(str_list, i + 1, str_list.length);
        break;
      }
    }

    System.out.println(Arrays.toString(answer));
  }
}

프로그래머스 코드

import java.util.*;

class Solution {
    public String[] solution(String[] str_list) {
        String[] answer = {};
        
        for (int i = 0; i < str_list.length; i++) {
            if (str_list[i].equals("l")) {
                answer = Arrays.copyOfRange(str_list, 0, i);
                break;
            } else if (str_list[i].equals("r")) {
                answer = Arrays.copyOfRange(str_list, i + 1, str_list.length);
                break;
            }
        }
        
        return answer;
    }
}