본문 바로가기
CODING TEST/BOJ

[java] 문제 015 (백준 2750)

by 정성인(人) 2024. 6. 6.

문제

수 정렬하기

 

교재 풀이

import java.util.Scanner;
public class P2750_수정렬하기 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    int[] A = new int[N];
    for (int i = 0; i < N; i++) {
      A[i] = sc.nextInt();
    }
    for (int i = 0; i < N - 1; i++) {
      for (int j = 0; j < N - 1 - i; j++) {
        if (A[j] > A[j + 1]) {
          int temp = A[j];
          A[j] = A[j + 1];
          A[j + 1] = temp;
        }
      }
    }
    for (int i = 0; i < N; i++) {
      System.out.println(A[i]);
    }
  }
}

 

설명

그냥 쉬움, 교재만 보고, 버블 정렬 까먹었을 때 훑는 정도로 끝내기

 

내 풀이) 24.6.6에 풀고 맞음

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

public class Main
{
public static void main(String[] args) throws IOException {
//N개의 수가 주어졌을 때, 이를 오름차순으로 정렬
//첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)
//둘째 줄부터 N개의 줄에는 수가 주어진다.
//    이 수는 절댓값이 1,000보다 작거나 같은 정수이다.
//    수는 중복되지 않는다.
    //첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력
    //
    //접근법
    //    그냥 sort 함수 쓰면 되는 거 아님?
        //슈도코드
        //    n을 입력받음
        //    n번 반복해서 수를 받는다.
        //        배열 a에 받고 
        //        sc.nextInt를 쓰면 되겠네
        //    sort한다 
        //    배열을 하나씩 출력한다 
            
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        
        int[] a=new int[n];
        for(int i=0;i<n;i++){
            a[i]=sc.nextInt();
        }
        
        Arrays.sort(a);
        for(int i=0;i<n;i++){
          System.out.println(a[i]);
        }
}
}

 

그냥 sort() 함수 쓰면 되는데 버블 정렬을 구현하고 싶으면

sort자리 대신 버블 정렬 구현한 거 넣으면 됨

 

내 풀이) 24.6.6에 풀고 맞음

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

public class Main
{
	public static void main(String[] args) throws IOException {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        
        int[] a=new int[n];
        for(int i=0;i<n;i++){
            a[i]=sc.nextInt();
        }
        
        //Arrays.sort(a); -> 이 부분 버블 정렬로 구현하기?
        for(int i=0;i<n-1;i++){
            for(int j=0;j<n-1-i;j++){
                // 앞에 게 더 크면 스왑하면 되지 
                if(a[j]>a[j+1]){
                    swap(a,j,j+1);
                }else{
                    continue;
                }
            }   
        }
        
        for(int i=0;i<n;i++){
          System.out.println(a[i]);
        }
	}
	
	//x, y번째 인덱스 원소 순서 바꾸는 함수
	private static void swap(int[] a, int x, int y){
	    int tmp=a[x];
	    a[x]=a[y];
	    a[y]=tmp;
	}
}

 

'CODING TEST > BOJ' 카테고리의 다른 글

[java] 문제 018 (백준 11399)  (0) 2024.06.09
[java] 문제 016 (백준 1377)  (0) 2024.06.06
[java] 문제 014 (백준 11286)  (0) 2024.06.06
[java] 문제 013 (백준 2164)  (0) 2024.06.06
[java] 문제 012 (백준 17298)  (0) 2024.06.04