문제)무작위로 10개의 숫자 입력받아 순서대로 정렬하기(버블정렬-재귀함수 사용)
import java.util.Scanner;
class Main{
static int arr[]=new int[10];
static int temp;
static int k;
static int sort(int j){
if(j<9){
for(k=0;k<9;k++){ //한번돌고 다시 인덱스 값 초기화 시켜서 돌리기 위해 포문사용
if(arr[k]>arr[k+1]){ //0번방1번방,1번방2번방,2번방3번방...숫자크기 비교해서 값 바꾸기
temp=arr[k+1];
arr[k+1]=arr[k];
arr[k]=temp;
System.out.println(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]+","+arr[4]+","+arr[5]+","+arr[6]+","+arr[7]+","+arr[8]+","+arr[9]);
}
}
return sort(j+1); //배열 인덱스값 순차비교를 위해 재귀함수사용
}else{
return 1;
}
}//sort
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
for(int i=0;i<10;i++){
arr[i]=sc.nextInt();
}
sort(0); //정렬을 위한 메서드 호출
}
}
-----------------------------------------------------------------------------------
데이터 수 , 스텝 수가 주어질 때 위와 같이 동작하도록 한 후 주어진 스텝 후의 배열의 상태를 출력하는 것이다.
예를 들어 7 개의 데이터가 주어지고 ,
2 스텝 후의 상태는
6 2 9 8 3 4 7
1 번째 스텝: 2 6 8 3 4 7 9
2 번째 스텝: 2 6 3 4 7 8 9
2 6 3 4 7 8 9 를 출력하면 된다.
입력
입력의
- 첫 줄은 데이터의 개수 n, 스텝 수 s 가 주어진다. ( 1 <= s < n )
- 다음 줄에는 n 개의 데이터가 입력으로 주어진다. 각 수는 -1000 에서 1000 사이 정수이다.
n 은 1000 이하의 양의 정수이다.
출력
s 스텝 후의 상태를 한 줄에 출력한다.
입출력 예
입력
7 26 2 9 8 3 4 7
출력
2 6 3 4 7 8 9
sol)
import java.util.Scanner;
class Main{
static Scanner sc = new Scanner(System.in);
static int n=sc.nextInt();
static int s=sc.nextInt();
static int arr[]=new int[n];
static int temp;
static int k;
static int sort(int j){
if(j<s){
for(k=0;k<n-1;k++){
if(arr[k]>arr[k+1]){
temp=arr[k+1];
arr[k+1]=arr[k];
arr[k]=temp;
}
}
return sort(j+1);
}else{
for(int w=0;w<n;w++){
System.out.print(arr[w]+" ");
}
return 1;
}
}
public static void main(String[] args){
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
}
sort(0);
}
}
'개발하자 > JAVA문제풀이' 카테고리의 다른 글
frequency (수의 빈도수 계산) (0) | 2015.01.06 |
---|---|
윷놀이 (0) | 2015.01.06 |
이진수로 변경하는 프로그램작성(재귀함수 이용) (0) | 2015.01.06 |
2진회귀수 문제 (0) | 2015.01.06 |
수뒤집기&회귀수 문제 (0) | 2015.01.06 |