Coding Test/Java Coding Test
[프로그래머스 / 자바] - 배열 회전시키기
nam_ji
2024. 5. 30. 17:26
배열 회전시키기
문제
- 정수 배열 numbers와 문자열 direction이 매개변수로 주어집니다.
- 배열 numbers의 원소를 direction 방향으로 한 칸씩 회전시킨 배열을 출력하는 문제입니다.
테스트 (인텔리제이)
- 우선 List타입의 answer를 생성합니다.
- 이후 for문을 이용하여 numbers의 값을 answer에 담아줍니다.
- direction을 구분하기 위해 if문으로 direction이 right일 때와 아닐 때로 나눴습니다. (문제의 방향은 right와 left만 존재하기 때문에 if문 뒤에 else if문이 아니어도 됩니다.)
- right일 때 가장 마지막 원소가 첫 번째 원소가 된다고 생각할 수 있기 때문에 answer의 마지막 원소를 삭제하고 첫 번째 자리에 추가해주면 됩니다.
- 마찬가지로 left는 첫 번쨰 원소가 마지막 원소가 된다고 생각할 수 있기 때문에 answer의 첫 번째 원소를 삭제하고 마지막 자리에 추가해주면 됩니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class 배열_회전시키기 {
public static void main(String[] args) {
/*
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다.
배열 number의 원소를 direction 방향으로 한 칸씩 회전시킨 배열을 출력하는 문제입니다.
numbers direction result
[1, 2, 3] "right" [3, 1, 2]
[4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]
*/
int[] numbers = {4, 455, 6, 4, -1, 45, 6};
String direction = "left";
List<Integer> answer = new ArrayList<>();
for (int num : numbers) {
answer.add(num);
}
if (direction.equals("right")) {
answer.remove(numbers.length - 1);
answer.add(0, numbers[numbers.length - 1]);
} else {
answer.remove(0);
answer.add(numbers[0]);
}
System.out.println(answer);
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public List<Integer> solution(int[] numbers, String direction) {
List<Integer> answer = new ArrayList<>();
for (int num : numbers) {
answer.add(num);
}
if (direction.equals("right")) {
answer.remove(numbers.length - 1);
answer.add(0, numbers[numbers.length - 1]);
} else {
answer.remove(0);
answer.add(numbers[0]);
}
return answer;
}
}