정렬 8

[Java] 백준 20291번 : 파일

문제 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 풀이 과정 TreeMap은 내부적으로 레드-블랙 트리 구조를 갖추고 있어, 정렬한 자료가 필요할 때 유용하다. 따로 key를 복사해서 정렬하지 않고, 값을 넣으면서 Entry자체를 정렬하는 것이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Map; import java.util.TreeMap; ..

[Java] 프로그래머스 : 가장 큰 수

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 처음 생각했던 방법은 숫자들의 자리 수를 다 맞추는 것을 생각했는데, 3442, 33 일 때는 3442 > 3300으로 제대로 적용되나 3223, 32일 때는 3223 > 3200이지만 322332보다 323223이 더 크게 되어 원하는 결과를 도출할 수 없었다. 그래서 다른 사람의 코드를 대략적으로 보고난 후, 좀 더 직관적으로 생각해서, 두 숫자 중 어..

[Java] 프로그래머스 : 프린터

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 우선 순위가 1~9까지 있고, 문서가 1~100까지이다. 따라서 문서를 우선순위에 따라 정렬하지 않고, int 1차원 배열에 각 우선 순위가 몇 개 있는지 표시하였다. 그리고나서 우선순위를 9부터 1까지 차례로 탐색하면서, 해당 우선순위를 가진 문서가 1개 이상이면 queue에서 찾도록 했다. import java.util.*; class Solution { public int s..

[Java] 백준 2751번 : 수 정렬하기 2

1. 문제 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 2. 풀이과정 1. 중복된 수가 들어오지 않으므로, 1차원 배열에 값이 있는지 여부를 기록한다. 2. 배열의 index는 절댓값이 1_000_000이하이기 때문에, 음수도 가능하므로 (들어온 값) + 1_000_000으로 하여 값을 true로 바꿔준다. 3. 출력할 때, 배열을 처음부터 끝까지 돌면서 true면 (index값) - 1_000_000하여 결과를 출력한다. imp..

[Java] 백준 3665번 : 최종 순위

1. 문제 https://www.acmicpc.net/problem/3665 3665번: 최종 순위 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에 www.acmicpc.net 2. 풀이과정 1. 우선 순위 관계를 boolean 2차원 배열에 저장한다. 이때, 1~N까지인 팀이 있으므로 첫 번째 요소를 찾기위해 제일 첫 번째를 0으로 지정하고 시작했다. 2. 위상 정렬으로 자신의 앞에 아무것도 없는 노드가 다음 순서가 된다. 3. 아직 방문하지 않은 모든 노드의 앞에 누군가가 있다면, 순위를 예측할 수 없는 경우이다. import java.io.Buff..

[Java] 백준 2623번 : 음악프로그램

1. 문제 https://www.acmicpc.net/problem/2623 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 2. 풀이 과정 1. 순서 찾기 : 위상정렬 2. 정렬이 안 되는 경우는 자신 앞에 있는 노드 수가 0이상인 노드만 남았을 때이다. 이 경우, 사이클이기 때문에 주어진 조건을 모두 만족하는 순서를 찾을 수 없다. import java.io.*; import java.util.*; public class boj2623 { public static void main(St..

정렬(Sorting)

1. 버블 정렬(Bubble Sort) 배열 처음부터 시작해서, 바로 옆에 있는 값과 비교하고 우선 순위에 맞게 위치를 바꾸거나 그대로 둔다. 정리하자면, "우선 순위가 낮은 걸 뒤로 보내는 방법"이라고 할 수 있다. step1) 값이 제일 큰 걸 우선 순위가 낮다고 할 때, '4'가 제일 뒤에 위치하게 된다. step2) 그 다음 큰 값인 '3'이 '4'앞에 위치한다. step3) 그 다음 큰 값인 '2'가 '3'앞에 위치하여 결과적으로 오름차순 정렬이 끝난다. - 성능 = O($n^{2}$) 2. 선택 정렬(Selection Sort) 아직 정렬되지 않은 배열 부분을 모두 차례대로 읽어가면서, 최솟값(우선순위가 높은 것)을 찾아 앞으로 위치시킨다. - 성능 = O($n^{2}$) 3. 삽입 정렬(In..

CS/자료구조 2021.07.13