방향을 결정하는 문자열 리스트 처리 방법
문자열 리스트 str_list
에는 "u", "d", "l", "r" 네 가지 문자열이 여러 개 저장되어 있습니다. 이 리스트에서 "l"과 "r" 중 먼저 나오는 문자열을 기준으로 특정 방향의 문자열들을 추출하는 문제를 해결해보겠습니다. 이 문제는 간단한 조건문과 배열의 부분 복사를 통해 해결할 수 있습니다.
문제 접근 방법
- 문자열 탐색
str_list
를 처음부터 순회하면서 "l"이나 "r"을 찾습니다. - 방향 결정
- "l"이 먼저 나오면 해당 인덱스를 기준으로 왼쪽에 있는 문자열들을 추출합니다.
- "r"이 먼저 나오면 해당 인덱스를 기준으로 오른쪽에 있는 문자열들을 추출합니다.
- 결과 반환 "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
이후의 요소들을 복사합니다. - 결과 반환 최종적으로 조건에 맞는 부분 배열을 반환합니다.결론이 문제는 간단한 조건문과 배열 복사를 통해 쉽게 해결할 수 있습니다. 중요한 점은 문자열 리스트에서 특정 조건을 만족하는 요소를 찾고, 그에 따라 적절한 부분 배열을 추출하는 것입니다. 이와 같은 문제는 배열의 기본적인 조작 방법을 이해하는 데 큰 도움이 됩니다.