순열 알고리즘 짜라는 과제가 있어서 짰는데 이거 잘 돌아가나여?

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

ArrayList<String> stream = new ArrayList<String>();

int i = 0;

     <o:p></o:p>

while(i < 3){ //입력받을문자열의갯수

  System.out.print("문자열입력: ");

  stream.add(scan.next());

  i++;

}

permutation(stream,0,stream.size()-1);

}

@SuppressWarnings("unchecked")

static void permutation(ArrayList<String> arr, int k, int n){

if(k == n){

  for(int i = 0 ; i < arr.size() ; i++){

   System.out.print(arr.get(i));

  }

  System.out.println();

  return;

}

ArrayList<String> tmpStream = (ArrayList<String>) arr.clone();

for(int i = k ; i <= n ; i++){

  swap(arr,k,i);

  permutation(arr,k+1,n);

  arr = (ArrayList<String>) tmpStream.clone();

}

}

static void swap(ArrayList<String> arr, int b, int c){

if(b == c) return;

String tmp = arr.get(b);

arr.set(b, arr.get(c));

arr.set(c, tmp);

}