👨💻Programming/알고리즘 풀이
JAVA - Lv1.Algorithm 알고리즘 풀이 - Special Sort, 구글 전화 면접 문제
코너(Corner)
2020. 11. 14. 15:41
반응형
Special Sort
구글 전화 면접 문제
n개의 정수를 가진 배열이 있다.
이 배열은 양의 정수와 음의 정수를 모두 가지고 있다.
이제 당신은 이 배열을 좀 특별한 방법으로 정렬해야 한다.
정렬이 되고 난 후, 음의 정수는 앞 쪽에.
양의 정수는 뒷 쪽에 있어야 한다.
또한, 양의 정수와 음의 정수의 순서에는 변함이 없어야 한다.
ex) -1 1 3 -2 2
==> -1 -2 1 3 2
제가 한 것이 정답은 아닙니다.
다만, 조금 더 응용해서 문제를 풀이하려는 방식을 택하려고 합니다.
코드에서 직접 배열에 값을 넣고 진행하여도 알고리즘을 이해하는데 있어서 문제는 없다고 생각합니다.
소스 코드
package Lv1;
import java.util.Arrays;
import java.util.Scanner;
public class ex5 {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.print("배열의 크기를 입력하세요.\n >");
int cnt = sc.nextInt();
if (cnt > 10 || cnt < 1 ) {
System.out.println("default : 5");
cnt = 5;
}
int[] arr = new int[cnt];
System.out.print("배열의 음수와 양수를 임의로 저장하세요.\n >");
for (int i = 0; i < arr.length; i++ ) {
arr[i] = sc.nextInt();
}
System.out.println("현재 배열 목록\n"+Arrays.toString(arr));
System.out.println("배열의 정렬 시작");
for (int i = 0; i < arr.length-1; i++ ) {
for (int j = 0; j < (arr.length-i)-1; j++ ) {
if ( arr[j] > 0 && arr[j+1] < 0 ) {
// && 하나라도 false가 등장하면 연산 중지
// || 하나라도 true가 등장하면 연산 중지
int temp = arr[j]; // 교환 알고리즘
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
반응형