[백준] 1427번 소트인사이드 - 내림차순 정렬 / 선택정렬

2023. 8. 21. 13:11·Java
문제

 

 

로직

정렬하려는 수 입력 받기

정렬하려는 수와 같은 길이의 문자열 선언

배열 선언

double형 변수 선언 

최댓값 인덱스 변수 선언 및 초기화

 

1. 반복문

- 정렬하고자하는 변수의 자릿수별로 doulbe형 변수에 저장

(Math.pow()는 double형으로 반환함)

- 배열에 저장한 값을 정수형으로 변환 후 차례대로 저장

 

2. 반복문

- 최댓값 초기화

- 3. 반복문

   -  배열에서 최댓값 찾아서 저장

   - if문 -> 최댓값과 배열의 값이 같을 때 -> 그때의 인덱스 값 저장

- 최댓값과 배열의 값 스왑하기

 

4. 반복문

- 내림차순 정렬된 배열의 값 순서대로 출력 

 

 

My Code
import java.io.*;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
String numStr = Integer.toString(N);
int [] numArray = new int[numStr.length()];
double num;
int maxIndex = 0;

for (int i = numArray.length - 1; i >= 0; i--)
{
num = N % (Math.pow(10, i+1)) / (Math.pow(10, i));
numArray[i] = (int)num;
}

for(int i = 0; i < numArray.length ; i++){
int max = 0;
for (int j = i; j < numArray.length; j++){
max = Math.max(numArray[j], max);
if (max == numArray[j]) maxIndex = j;
}
int temp = numArray[i];
numArray[i] = numArray[maxIndex];
numArray[maxIndex] = temp;
}
for(int a:numArray){
System.out.print(a);
}
}
}

 

 

문제의 핵심 및 알게된 점

선택정렬을 이용하여 내림차순 정렬이 가능한 문제이다.

N의 값이 1~1,000,000,000까지의 범위인데 이때 N은 자릿수이기 때문에 10자리인 10을 의미한다.

따라서 시간복잡도가 O(n^2)인 선택정렬를 이용해도 된다.

최댓값을 찾고 인덱스를 스왑하는 것이 핵심인 문제이다.

 

 

참고 강의_인프런의 Do it! 알고리즘 코딩테스트 with JAVA

저작자표시 (새창열림)

'Java' 카테고리의 다른 글

[백준] 11004번 K번째 수 - 퀵정렬 / 오름차순 정렬  (0) 2023.08.28
[백준] 11399번 ATM - 삽입정렬 / 오름차순 정렬 / 계산  (0) 2023.08.26
[백준] 2750번 수 정렬하기 - 버블 정렬 구현 / BubbleSort / 오름차순  (0) 2023.08.19
[백준] 11286번 절댓값 힙 - 우선순위 큐 / 오름차순 정렬 / 반환 값 변화 / 절댓값  (0) 2023.08.19
[백준] 2164번 카드2 - 큐(Queue)/선입선출/스택을 이용한 방법/  (0) 2023.08.18
'Java' 카테고리의 다른 글
  • [백준] 11004번 K번째 수 - 퀵정렬 / 오름차순 정렬
  • [백준] 11399번 ATM - 삽입정렬 / 오름차순 정렬 / 계산
  • [백준] 2750번 수 정렬하기 - 버블 정렬 구현 / BubbleSort / 오름차순
  • [백준] 11286번 절댓값 힙 - 우선순위 큐 / 오름차순 정렬 / 반환 값 변화 / 절댓값
미우딩
미우딩
다양한 프로그래밍 언어를 공부하고 있는 공대생입니다! Python, Java, C언어를 주로 공부하고 있으며 Figma를 통한 디자인도 종종 올릴 예정입니다.
  • 미우딩
    미우의 코딩 기록
    미우딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • Java (46)
      • C언어 (0)
      • 대외활동 (4)
      • Spring (4)
      • 프로젝트 (2)
      • 앱개발 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT #백준 #코딩테스트 #알고리즘 #구간합 #반복문
    IT #코딩테스트 #알고리즘 #DFS #재귀함수 #무방향그래프
    IT #코딩테스트 #이진탐색 #알고리즘
    android #java #kotlin #상태관리
    IT #알고리즘 #그리디알고리즘 #탐욕알고리즘 #코테
    IT #알고리즘 #코딩테스트 #삽입정렬 #오름차순정렬
    IT #BFS #코딩테스트 #구현 #큐 #재귀함수
    android #java #kotlin #compose
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #평균구하기
    IT #코딩테스트 #알고리즘 #스택 #
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #아스키코드
    push #pop #StringBuffer
    IT #알고리즘 #코딩테스트 #선택정렬 #내림차순정렬 #최댓값
    IT #코딩테스트 #알고리즘 #백준 #투포인터 #배열
    IT #알고리즘 #코딩테스트 #DFS
    BufferedReader
    Spring #정적컨텐츠 #MVC #템플릿엔진 #API #애너테이션
    IT #큐 #알고리즘 #코딩테스트 #자바 #선입선출
    IT #코딩테스트 #알고리즘 #투포인터 #시간제한 #Scanner #BufferedReader #StringTokenizer
    IT #알고리즘 #코딩테스트 #퀵정렬 #오름차순정렬
    java #android #개발자
    IT #코딩테스트 #알고리즘 #슬라이딩윈도우 #투포인터 #함수
    IT #알고리즘 #코딩테스트 #우선순위큐 #힙 #절댓값 #오름차순 #정렬
    IT #코딩테스트 #알고리즘 #버블정렬 #오름차순
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미우딩
[백준] 1427번 소트인사이드 - 내림차순 정렬 / 선택정렬
상단으로

티스토리툴바