2023.01.05 : 2750 수 정렬하기

‍박예서·2023년 1월 5일

코딩테스트

목록 보기
15/27

1. 문제

2. 아이디어

  • 버블 정렬
  1. 비교 연산이 필요한 루프 범위를 설정한다.
  2. 인접한 데이터 값을 비교한다.
  3. swap 조건(오름차순: 왼쪽에 있는 데이터가 오른쪽에 있는 데이터보다 크면) swap 연산을 수행한다.
  4. 루프 범위가 끝날 때까지 2-3 반복한다.
  5. 정렬 영역을 설정한다. 다음 루프를 실행할 때는 이 영역을 제외한다.
  6. 비교 대상이 없을 떄까지 1-5 반복한다.

3. 슈도코드

while(true){
	for(i : 0 ~ N-1){
    	i 번째 데이터가 i+1 번째 데이터보다 크다면 두 수의 자리를 바꾼다
    }
    N = N-1;
    if(N==0) break;
}
데이터 출력

4. 코드

import java.util.*;
import java.io.*;

class Main {

  public static int[] swap(int[] data, int i, int j){
    int tmp = data[i];
    data[i] = data[j];
    data[j] = tmp;

    return data;
  }
  
  public static void main(String args[]) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    int N = Integer.parseInt(br.readLine());
    int[] data = new int[N];

    for (int i =0 ; i<N;i++){
      data[i] = Integer.parseInt(br.readLine());
    }

    while(true){

      for(int i = 0 ; i < N-1; i++){
        if(data[i] > data[i+1]) data = swap(data, i, i+1);
      }

      N = N -1;
      if (N == 0) break;
    }

    String result = Arrays.toString(data).replace("[","").replace("]","").replace(", ","\n");
    System.out.println(result);
    
  } 
}

5. 느낀점 및 배운점

  • 배열을 문자열로 바꾸기 : Arrays.toString(배열);
  • 문자열에 있는 특정 문자를 다른 문자로 바꾸기 : 문자열명.replace("원래 문자", "바꾸고 싶은 문자");

0개의 댓글