99 Club 2기 | Java | Beginner
1470. Shuffle the Array
🏷 관련 주제 : Array
Easy
Given the array nums consisting of 2n elements in the form [x1,x2,...,xn,y1,y2,...,yn].
Return the array in the form [x1,y1,x2,y2,...,xn,yn].
Example 1:
Input: nums = [2,5,1,3,4,7], n = 3
Output: [2,3,5,4,1,7]
Explanation: Since x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 then the answer is [2,3,5,4,1,7].
Example 2:
Input: nums = [1,2,3,4,4,3,2,1], n = 4
Output: [1,4,2,3,3,2,4,1]
Example 3:
Input: nums = [1,1,2,2], n = 2
Output: [1,2,1,2]
Constraints:
1 <= n <= 500nums.length == 2n1 <= nums[i] <= 10^3
Accepted 693,885 | Submissions 783,903
✔ Solution with Array & index
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] answer = new int[n * 2];
for (int i = 0; i < n; i++) {
answer[i * 2] = nums[i];
answer[i * 2 + 1] = nums[i + n];
}
return answer;
}
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
📌 오늘 만난 문제 : 매개변수로 받은 [x1,x2,...,xn,y1,y2,...,yn] 꼴의 길이 2n의 정수 배열 nums 를 [x1,y1,x2,y2,...,xn,yn] 꼴로 바꾸어 반환하라.
1. 반환할 배열을 담을 변수 answer 초기화
nums의 길이가n * 2이므로answer의 길이도n * 2로 초기화
int[] answer = new int[n * 2];
nums의 각 원소가 answer의 몇번 인덱스로 가는지 알아보자.
x1은 nums의 0번 인덱스에서 answer의 1번 인덱스로 가야함.
x2은 nums의 1번 인덱스에서 answer의 3번 인덱스로 가야함.
x3은 nums의 2번 인덱스에서 answer의 5번 인덱스로 가야함.
...
xi는 nums의 i번 인덱스에서 answer의 i * 2 + 1번 인덱스로 가야함.
y1은 nums의 n번 인덱스에서 answer의 2번 인덱스로 가야함.
y2은 nums의 n + 1번 인덱스에서 answer의 4번 인덱스로 가야함.
y3은 nums의 n + 2번 인덱스에서 answer의 6번 인덱스로 가야함.
...
yi는 nums의 n + i - 1번 인덱스에서 answer의 i * 2번 인덱스로 가야함.
2. 위의 인덱스를 참고하여 nums의 원소들을 answer로 옮기자.
for (int i = 0; i < n; i++) {
answer[i * 2] = nums[i];
answer[i * 2 + 1] = nums[i + n];
}
3. answer에 할당된 배열을 반환하자.
return answer;
💬 무엇을 새롭게 알았는지
문제의 조건을 보고 인덱스의 번호가 어디서 어디로 옮겨가는지 규칙을 찾아 코드로 작성해 볼 수 있었다.
🆙 Next Level
- 미들러 : 1476. Subrectangle Queries
- 챌린저 : 275. H-Index II