[알고리즘문제풀기] 배열 회전시키기

silver's avatar
Dec 31, 2024
[알고리즘문제풀기] 배열 회전시키기

문제

내가 작성한 정답

class Solution { public int[] solution(int[] numbers, String direction) { int[] answer = new int[numbers.length]; for(int i = 0; i < numbers.length; i++){ if(direction.equals("left")){ if(i==0){ answer[numbers.length-1] = numbers[0]; }else { answer[i-1] = numbers[i]; } } else if (direction.equals("right")) { if(i==0){ answer[0] = numbers[numbers.length-1]; }else { answer[i] = numbers[i-1]; } } } return answer; } }

다른 사람들의 정답

import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; class Solution { public int[] solution(int[] numbers, String direction) { List<Integer> list = Arrays.stream(numbers) //IntStream -> Stream<Interger> .boxed() .collect(Collectors.toList()); if (direction.equals("right")) { // list의 맨 앞에 마지막 요소를 추가 -> 한 칸씩 밀리면서 오른쪽으로 한 칸씩 밀린 배열 list.add(0, list.get(list.size() - 1)); // 마지막 요소를 삭제 list.remove(list.size() - 1); } else { // list의 맨 뒤에 맨 처음 요소를 추가 -> 한 칸씩 당겨지면서 왼쪽으로 한 칸씩 당겨진 배열 list.add(list.size(), list.get(0)); // 처음 요소를 삭제 list.remove(0); } return list.stream() // Stream<Integer> -> IntStream .mapToInt(Integer::intValue) .toArray(); } }
class Solution { public int[] solution(int[] numbers, String direction) { int length = numbers.length; int[] answer = new int[length]; // right이면 1 아니면 -1 int direct = "right".equals(direction) ? 1 : -1; // + length : 음수 인덱스가 발생하지 않게 한다. // 나머지로 배열의 인덱스를 정한다. for (int i = 0; i < length; i++) answer[i] = numbers[(i - direct + length) % length]; return answer; } }
Share article

silver