반응형
백준 1427번 문제 - 소트인사이드
1427번: 소트인사이드
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
문제 분석
- 배열 정렬을 내림차순으로 해야한다
해결 키 포인트
- 오름차순일 경우는 Arrays.sort()를 사용하면 되지만, 내림차순일 경우는 Arrays.sort() 사용하기도 복잡하다
- 내림차순으로 정렬할 때, 선택 정렬 사용 - 선택 정렬이 시간복잡도가 효율적인건 아니나 위 문제는 조건 시간이 짧지 않으므로 가능
선택 정렬 설명
최솟값 또는 최댓값을 찾고, 남은 정렬 부분의 가장 앞에 있는 데이터와 swap하는 것이 선택 정렬의 핵심
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 수 입력
String s = br.readLine();
int [] nums = new int [s.length()];
for(int i=0;i<s.length();i++) {
nums[i] = s.charAt(i);
}
// 수 정렬
for(int i=0;i<s.length();i++) {
// i 이후부터 가장 큰 수 찾기
int max = i;
for(int j=i;j<s.length();j++) {
if(nums[max] < nums[j]) {
max = j;
}
}
// 가장 큰 수와 i번째 수와 바꾸기
int temp = nums[i];
nums[i] = nums[max];
nums[max] = temp;
// 출력
bw.write(nums[i]);
}
bw.flush();
bw.close();
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[백준 11004] K번째 수 (JAVA) (0) | 2023.07.29 |
---|---|
[백준 11399] ATM (JAVA) (0) | 2023.07.29 |
[백준 1377] 버블 소트 (JAVA) (0) | 2023.07.10 |
[백준 2750번] 수 정렬하기 (JAVA) (0) | 2023.03.12 |
[백준 11286번] 절댓값 힙 (JAVA) (0) | 2023.03.12 |