문제
내가 작성한 정답
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