찾아주셔서서 감사합니다! - -) _ _)

LEFTANDRIGHT 프로그래머스 무인도 여행 JAVA 왼쪽 오른쪽

방향을 결정하는 문자열 리스트 처리 방법

문자열 리스트 str_list에는 "u", "d", "l", "r" 네 가지 문자열이 여러 개 저장되어 있습니다. 이 리스트에서 "l"과 "r" 중 먼저 나오는 문자열을 기준으로 특정 방향의 문자열들을 추출하는 문제를 해결해보겠습니다. 이 문제는 간단한 조건문과 배열의 부분 복사를 통해 해결할 수 있습니다.

문제 접근 방법

  1. 문자열 탐색 str_list를 처음부터 순회하면서 "l"이나 "r"을 찾습니다.
  2. 방향 결정
  • "l"이 먼저 나오면 해당 인덱스를 기준으로 왼쪽에 있는 문자열들을 추출합니다.
  • "r"이 먼저 나오면 해당 인덱스를 기준으로 오른쪽에 있는 문자열들을 추출합니다.
  1. 결과 반환 "l"이나 "r"이 없다면 빈 리스트를 반환합니다.코드 구현아래는 위의 접근 방법을 코드로 구현한 예시입니다.
    import java.util.Arrays;
    public class Solution {
    public static String[] solution(String[] str_list) {
    String[] answer = {};
    boolean leftAndRight = true; // true left, false right
    int copyIdx = 0;
    for (int i = 0; i < str_list.length; i++) {
    if (str_list[i].equalsIgnoreCase("l")) {
    leftAndRight = true;
    copyIdx = i;
    break;
    } else if (str_list[i].equalsIgnoreCase("r")) {
    leftAndRight = false;
    copyIdx = i + 1;
    break;
    }
    }
    if (leftAndRight && copyIdx > 0) {
    answer = Arrays.copyOfRange(str_list, 0, copyIdx);
    } else if (!leftAndRight && copyIdx < str_list.length) {
    answer = Arrays.copyOfRange(str_list, copyIdx, str_list.length);
    }
    return answer;
    }
    public static void main(String[] args) {
    String[] str_list = {"u", "u", "l", "r"};
    System.out.println(Arrays.toString(solution(str_list)));
    }
    }
    코드 설명
  • 탐색 및 방향 결정 for 루프를 사용하여 str_list를 순회하며 "l" 또는 "r"을 찾습니다. 찾으면 leftAndRight 변수를 통해 방향을 결정하고, copyIdx에 해당 인덱스를 저장합니다.
  • 부분 배열 복사 Arrays.copyOfRange 메서드를 사용하여 결정된 방향에 따라 부분 배열을 복사합니다.
  • "l"이 먼저 나오면 copyIdx 이전의 요소들을 복사합니다.
  • "r"이 먼저 나오면 copyIdx 이후의 요소들을 복사합니다.
  • 결과 반환 최종적으로 조건에 맞는 부분 배열을 반환합니다.결론이 문제는 간단한 조건문과 배열 복사를 통해 쉽게 해결할 수 있습니다. 중요한 점은 문자열 리스트에서 특정 조건을 만족하는 요소를 찾고, 그에 따라 적절한 부분 배열을 추출하는 것입니다. 이와 같은 문제는 배열의 기본적인 조작 방법을 이해하는 데 큰 도움이 됩니다.
  •  

 

🌸공감과 공유는 큰 힘이 됩니다🌸
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유

더 많은 정보 보러가기