[1427번] 소트인사이드 ( 선택정렬 )

Loopy·2023년 11월 26일
0

코테 문제들

목록 보기
16/113


✅ 선택 정렬

내림차순 : 최대값 찾기
오름차순 : 최소값 찾기
시간 복잡도 : O(n제곱) -> 최대값 / 최소값을 찾기 위해 n 번 * n 번 반복

알기 쉽게 과정을 손으로 따라가보자.


✅ str.substring() 함수

arr[i] = Integer.parseInt(s.substring(i, i + 1));
arr[i] = Integer.parseInt(s.substring(i));

[ 1번 코드 ]
s.substring(i, i + 1)을 사용하여 인덱스 i 에서 시작하는 길이 1 의 부분 문자열을 추출하고 정수로 변환한다.

[ 2번 코드 ]
문자열 s에서 인덱스 i 에서부터 끝까지의 부분 문자열을 추출하고 정수로 변환합니다.


✅ 코드

최대값을 배열 값이 아닌 인덱스 번호를 통해 구현한 발상이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s = br.readLine();
		int arr[] = new int[s.length()];

		for (int i = 0; i < s.length(); i++) {
			arr[i] = Integer.parseInt(s.substring(i, i + 1));
		}

		//최대갑을 값이 아닌 인덱스 번호로 사용한다.
		for (int i = 0; i < arr.length; i++) {
			int max = i; //첫 번째 인덱스를 max값으로
			//i 번째 다음 구간부터
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[j] > arr[max]) {
					max = j;
				}
			}
			if (arr[i] < arr[max]) {
				int temp = arr[i];
				arr[i] = arr[max];
				arr[max] = temp;
			}
		}

		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]);
		}
	}
}

profile
잔망루피의 알쓸코딩

0개의 댓글