◎ 다른 문제 풀이
[알고리즘] 정렬 문제 풀이(백준 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번: 세 수
첫째 줄에 세 정수 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
첫째 줄에 사람의 수 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); } }
이번에는 알고리즘 스터디를 통해 정렬에 대해서 공부했습니다!
정렬에는 여러가지 방법이 있습니다. 똑같이 오름차순으로 정렬한다고해도 선택 정렬, 버블 정렬, 삽입 정렬 등을 사용할 수 있네요.
정렬을 사용하면 해당 위치에 있는 값들을 사용할 수 있다는 장점이 있네요!!
정렬의 다른 문제들을 많이 풀어보고 다양한 방법들을 사용해 봐야겠어요!!
다음 스터디때는 정렬의 방법 중 쉘 정렬, 퀵 정렬, 병합 정렬에 대해서 배워볼게요~
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

'문제풀기 > 알고리즘 스터디' 카테고리의 다른 글
[알고리즘] 정렬 문제 풀이(백준 2750번, 2751번, 10989번) (0) | 2023.06.07 |
---|---|
[알고리즘] 정렬 문제 풀이(백준 1181번, 1920번, 1427번) (0) | 2023.06.06 |
[알고리즘] 재귀 문제 풀이(백준 27433번, 10870번, 25501번) (0) | 2023.05.14 |
[알고리즘] Queue 문제 풀이(백준 10773번, 10828번) (0) | 2023.05.07 |
[알고리즘] Stack 문제 풀이(백준 10773번, 10828번) (3) | 2023.05.04 |