이 문제는 매일프로그래밍에서 출제한 문제로, 모든 문제의 저작권은 매일프로그래밍에 있다는 것을 밝힙니다.
안녕하세요, 매일프로그래밍 이번주 문제입니다.
정수 배열(int array)이 주어지면 0이 아닌 정수 순서를 유지하며 모든 0을 배열 오른쪽 끝으로 옮기시오. 단, 시간복잡도는 O(n), 공간복잡도는 O(1)여야 합니다.
예제)
Input: [0, 5, 0, 3, -1]
Output: [5, 3, -1, 0, 0]
Input: [3, 0, 3]
Output: [3, 3, 0]
풀이를 보고 싶으시다면 풀이보기를 눌러주세요.
예제)
Input: [0, 5, 0, 3, -1]
Output: [5, 3, -1, 0, 0]
Input: [3, 0, 3]
Output: [3, 3, 0]
풀이를 보고 싶으시다면 풀이보기를 눌러주세요.
해결 : C++
#include <iostream>
using namespace std;
int main(void) {
int cnt = 0;
cin >> cnt;
int *SaveArray = new int[cnt + 1];
cout << "INPUT : ";
for (int i = 0; i < cnt; i++) {
cin >> SaveArray[i];
}
int count = cnt - 1;
/*Repeat check */
while(count--){
for (int i = 0; i < cnt; i++) {
int temp = 0;
if (SaveArray[i] == 0 && (i+1) != cnt) {
temp = SaveArray[i+1];
SaveArray[i + 1] = 0;
SaveArray[i] = temp;
}
}
}
cout << "OUTPUT : ";
for (int i = 0; i < cnt; i++) {
cout << SaveArray[i] << " , ";
}
}
댓글 없음:
댓글 쓰기