본문 바로가기

문제풀기/알고리즘 스터디

[알고리즘] 정렬 문제 풀이(백준 10817번, 11399번)

728x90
반응형

◎ 다른 문제 풀이

 

[알고리즘] 정렬 문제 풀이(백준 2750번, 2751번, 10989번)

1. 수 정렬하기(백준 2750번) 2750번: 수 정렬하기 (acmicpc.net) 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보

bobo12.tistory.com

 

[알고리즘] 정렬 문제 풀이(백준 1181번, 1920번, 1427번)

1. 단어 정렬(백준 1181번 문제) 1181번: 단어 정렬 (acmicpc.net) 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가

bobo12.tistory.com

 

 

 

1. 세 수(백준 10817번 문제)

 

10817번: 세 수 (acmicpc.net)

 

10817번: 세 수

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

www.acmicpc.net

 

▷ 풀이 코드

1. 버블 정렬
import java.util.Scanner;

public class ThreeNum {         
   static void ThreeNum(int arr[]) {
      for(int i=0; i<arr.length; i++) {
    	  for(int j=i+1; j<arr.length; j++) {
    		  if(arr[j] < arr[i]) {
    			  int temp = arr[i];
    			  arr[i] = arr[j];
    			  arr[j] = temp;
     		  }
    	  }
      }
   }
   
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    
    	int arr[] = new int[3];
    	
    	for(int i=0; i<arr.length; i++) {
    		arr[i] = sc.nextInt();
    	}
    	
    	ThreeNum(arr);
    	
    	System.out.println(arr[1]);
   }
}​

 

2. 선택 정렬

import java.util.Scanner;

public class ThreeNum {         
   static void ThreeNum(int arr[]) {
      for(int i=0; i<arr.length-1; i++) {
    	  int min = i;
    	  for(int j=i+1; j<arr.length; j++) {
    		  if(arr[min] > arr[j]) {
    			  min = j;
    		  }
    	  }
    		 
		  int temp = arr[i];
		  arr[i] = arr[min];
		  arr[min] = temp;
      }
   }
   
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    
    	int arr[] = new int[3];
    	
    	for(int i=0; i<arr.length; i++) {
    		arr[i] = sc.nextInt();
    	}
    	
    	ThreeNum(arr);
    	    	
    	System.out.println(arr[1]);
   }
}

 

3. 삽입 정렬

import java.util.Arrays;
import java.util.Scanner;

public class InsertSort {         
   static void ThreeNum(int arr[]) {
      for(int i=0; i<arr.length-1; i++) {
    	  int min = arr[i];
    	  int num = 0;
    	  
    	  for(int j=i+1; j<arr.length; j++) {
    		  if(min > arr[j]) {
    			  min = arr[j];
    			  num = j;
    		  }
    	  }
    	  
    	  for(int j=num; j>0; j--) {
    		  arr[j] = arr[j-1];
    	  }
    	  
    	  arr[i] = min;
    	  
      }
   }
   
   
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    
    	int arr[] = new int[3];
    	
    	for(int i=0; i<arr.length; i++) {
    		arr[i] = sc.nextInt();
    	}
    	
    	ThreeNum(arr);
    	    	
    	System.out.println(arr[1]);
   }
}

 

 

2. ATM(백준 11399번 문제)

 

11399번: ATM (acmicpc.net)

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

▷ 풀이 코드

import java.util.Arrays;
import java.util.Scanner;

public class ATM {         
   static void ThreeNum(int arr[]) {
      for(int i=0; i<arr.length-1; i++) {
    	  int min = i;
    	  for(int j=i+1; j<arr.length; j++) {
    		  if(arr[min] > arr[j]) {
    			  min = j;
    		  }
    	  }
		  int temp = arr[i];
		  arr[i] = arr[min];
		  arr[min] = temp;
		  
      }
   }
   
   
   public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	
    	int n = sc.nextInt();
    	
    	int arr[] = new int[n];	
    	
    	for(int i=0; i<arr.length; i++) {
    		arr[i] = sc.nextInt();
    	}
    	
    	ThreeNum(arr);
    	    	
    	int sum = 0;
    	
    	for(int i=0; i<arr.length; i++) {
    		sum += arr[i]*(arr.length - i);
    	}
    	
    	System.out.println(sum);
   }
}

 

 

이번에는 알고리즘 스터디를 통해 정렬에 대해서 공부했습니다!

정렬에는 여러가지 방법이 있습니다. 똑같이 오름차순으로 정렬한다고해도 선택 정렬, 버블 정렬, 삽입 정렬 등을 사용할 수 있네요.

 

정렬을 사용하면 해당 위치에 있는 값들을 사용할 수 있다는 장점이 있네요!!

 

정렬의 다른 문제들을 많이 풀어보고 다양한 방법들을 사용해 봐야겠어요!!

 

다음 스터디때는 정렬의 방법 중 쉘 정렬, 퀵 정렬, 병합 정렬에 대해서 배워볼게요~

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

 

728x90
반응형