728x90
반응형
주어진 배열에서 숫자 0을 배열의 끝으로 이동시키는 문제입니다. 주어진 배열을 수정하며, 0 이외의 숫자들은 순서를 유지해야 합니다.
문제 설명:
주어진 배열 nums가 주어집니다. 이 배열에서 숫자 0을 배열의 끝으로 이동시키세요. 0 이외의 숫자들의 순서는 유지되어야 합니다.
예를 들어, 입력 배열 nums가 다음과 같다면:
[0, 1, 0, 3, 12]
이 배열을 수정하여 숫자 0을 배열의 끝으로 이동시키면:
[1, 3, 12, 0, 0]
노트:
배열을 수정하며 0을 뒤로 이동시켜야 합니다.
0 이외의 숫자들은 순서를 유지해야 합니다.
추가 배열을 사용하지 말고 주어진 배열을 직접 수정해야 합니다.
public void MoveZeroes(int[] nums) {
int count = 0;
int index = 0;
foreach(int i in nums){
if(i == 0){
count++;
}
else{
nums[index++] = i;
}
}
if(count > 0){
for(int k = 0;k<count;k++){
nums[index++] = 0;
}
}
}
0 이외의 숫자를 배열의 앞쪽으로 이동시키고,
0의 개수에 따라 뒤에 0을 추가하는 방식으로 문제를 해결하는 좋은 접근 방법입니다. 코드는 foreach 루프를 사용하여 배열을 한 번 순회하고, 0이 아닌 숫자는 nums 배열의 앞쪽에 복사되고, 그 다음에 0을 개수에 따라 뒤에 추가합니다. 이로써 배열의 순서가 유지되고 0이 배열 뒤로 이동됩니다.
이 코드는 성능 면에서도 효율적입니다. 하나의 루프로 배열을 순회하며 중복 복사를 최소화하면서 0을 뒤로 이동시키기 때문입니다. 따라서 주어진 배열을 효과적으로 수정하여 문제를 해결할 수 있습니다.
728x90
반응형
'Leetcode' 카테고리의 다른 글
101. Symmetric Tree (0) | 2023.11.01 |
---|---|
414. Third Maximum Number (0) | 2023.11.01 |
303. Range Sum Query - Immutable (0) | 2023.10.31 |
94. Binary Tree Inorder Traversal (0) | 2023.10.30 |
83. Remove Duplicates from Sorted List (0) | 2023.10.29 |