👨💻Programming/알고리즘 풀이
JAVA - Lv1.Algorithm 알고리즘 풀이 - Special Sort, 구글 전화 면접 문제
반응형
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));
}
}
반응형
'👨💻Programming > 알고리즘 풀이' 카테고리의 다른 글
JAVA - lv1. - greedy 알고리즘, 가성비 최대화 구하기 - (0) | 2020.11.22 |
---|---|
JAVA(자바) - Lv1. 알고리즘 풀이 - 3이 나타나는 시간을 전부 합하기 (0) | 2020.11.14 |
JAVA(자바) - Lv1. Algorithm - 게시판 페이징 (0) | 2020.11.14 |
JAVA - Lv1. Algorithm - Tab키를 공백 4개(4 space)로 바꾸는 프로그램 (0) | 2020.11.14 |
JAVA -Lv.1 - Algorithm Ex2 - 자연수 배수 총합 구하기 (0) | 2020.11.14 |
댓글