👨‍💻Programming/알고리즘 풀이

JAVA - Lv1.Algorithm 알고리즘 풀이 - Special Sort, 구글 전화 면접 문제

코너(Corner) 2020. 11. 14.
반응형

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));
	}

}

 

 


 

반응형

댓글