본문 바로가기

Algorithm/[Sort]

(8)
BOJ10989 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net
BOJ 2751 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net
BOJ2750
[정렬] 1427번 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 해당은 간단하다. 문자열을 int로 받아서, 새로운 배열에 넣어주고, 해당 배열을 역순출력해주면 된다.
[정렬] 1181번 문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 대표적인 정렬이다. 객체 object로 받아서, 해당 object가 Comparable에 대한 걸 impl하게 하고, 해당 compareTo를 오버라이드해서 객체의 비교조건을 구현, 해당 객체를 비교해주면, 끝난다. foreach가 돌때, 객체의 특정 이름만 필요하기 때문에, word의 이름만 출력해준다.
[정렬] 11399 ATM 풀이 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net ATM 풀이이다. 간단하게, 정렬을 하고, foreach로 부분합을 구하는 것이다. 부분합을 구한뒤에, 다음 each가 돌기전에 list에 add를 해주고, 마지막에 List의 값을 다 합해주면 된다. list2.indexOf(object) 를 사용해서, 해당 인덱스를 구하는 방법이 있다. 인덱스가 필요할때는, 전통적인 for문이 최적화가 되어있어, 빠르기때문에 해당 방법으로 돌려주면 좋고 인덱스를 굳이 사용해야하는지에 대한 ..
[정렬] 10989 문제 풀이 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 해당 관련되서는, 퀵정렬을 사용해서 풀었다. 퀵정렬은 처음 값을 pivot으로 놓고, 재귀를 통해서 무한히, pivot보다 작으면 오른쪽 , 크면 왼쪽 배열로정렬하는 것이다. 그러면 그 안에서도 정렬이 필요하기 때문에, 재귀로 구현한다. 해당 안에서 정렬을 하고 왼쪽 pivot 오른쪽 으로 addAll을 통해, 배열을 합친다. 해당 방법으로 합치게 되면, 정렬 된 배열을 만들 수있다. (재귀로 한다면) 소스 참고
[정렬] 10825 - 국영수 해당, 관련되서는 간단하다. 모든 정렬에 대한 공식? 같은 것들이 있는데 그것중 하나는 특정 node나 class를 선언하고 comparable을 impl하고, 내부에서 compareTo를 오버라이드 하는 것이다. 해당 과 같이 구현하면, 단순히 이름,국,영,수를 받아서 비교 및 정렬을 할수 있다. compateTo를 구현하게 되면 sort를 했을때 특정 sort기준? 을 정할수있다.