문제
문제 탐색하기
- 입력 : 나무 조각에 쓰여있는 랜덤의 수
- 출력
- 랜덤의 수를 차례대로 정렬
- 조각의 순서가 바뀔 때마다 출력
- 순서가 1,2,3,4,5 가 될 때까지 계속 정렬
가능한 시간복잡도
입력 범위 5개
입력 받는 값이 5개로 정해져있으므로 시간복잡도는 신경쓰지 않고 풀었다.
코드 설계하기
- 5개의 숫자 정보를 입력받아 배열에 저장한다.
- 배열 앞에서부터 값을 비교해가면서 정렬한다.
- 위치가 변경되었다면 배열을 출력해준다.
- 1,2,3,4,5 순서가 될 때까지 위의 과정을 반복한다.
풀이 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] intArr = new int[5]; // 나무가지 숫자 담을 배열
int temp = 0; // 배열 변경할 때 사용할 변수
// 1. 입력받는 수 배열에 저장
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i< intArr.length;i++) {
intArr[i] = Integer.parseInt(st.nextToken());
}
// 2. 배열 앞에서부터 크기 비교해가며 위치 변경
boolean chk = false;
while (!chk) {
chk = true; // for문 돌렸는데 배열의 위치 변경이 없으면 while문 멈추기
for (int i = 0; i < intArr.length - 1; i++) {
if (intArr[i] > intArr[i + 1]) { // 앞에 수가 더 크면
// 뒤에 위치한 수와 위치 변경하기
temp = intArr[i];
intArr[i] = intArr[i + 1];
intArr[i + 1] = temp;
// 위치 변경 후 순서 출력
for (int j = 0; j < intArr.length; j++) {
System.out.print(intArr[j] + " ");
}
System.out.println();
chk = false;
}
}
}
}
}
'코딩테스트' 카테고리의 다른 글
[백준] 2748번 : 피보나치 수 2 자바(JAVA) 풀이 (0) | 2024.09.20 |
---|---|
[백준] 7568번 : 덩치 자바(JAVA) 풀이 (2) | 2024.09.15 |
[백준] 25305번 : 커트라인 자바(JAVA) 풀이 (2) | 2024.09.13 |
[백준] 5635번 : 생일 자바(JAVA) 풀이 (0) | 2024.09.12 |
[백준] 1181번 : 단어 정렬 자바(JAVA) 풀이 (0) | 2024.09.11 |