목록정렬 (47)
기록방
👉 문제링크 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 🔸 문제 분석 🔸 문자열 배열을 다음과 같은 세 조건으로 정렬해서 출력한다. 길이가 다르다면 짧은 것이 앞에 온다. 길이가 같다면, 한 문자열 안에 들어있는 숫자의 합이 작은 것이 먼저 온다. 숫자의 합도 같다면, 문자열을 사전순 비교한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.uti..
👉 문제링크 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 🔸 문제 분석 🔸 이름, 국어, 영어 수학을 입력받고 문제에 제시된 대로 정렬 후 이름을 출력한다. 4가지 조건에 따른 사용자 지정 정렬이 필요하다. 정렬을 위한 클래스를 만들고 Comparable인터페이스를 상속해 compareTo 메소드를 오버라이드한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade..
👉 문제링크 2535번: 아시아 정보올림피아드 첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사 www.acmicpc.net 🔸 문제 분석 🔸 대회 결과가 주어지면 점수 순으로 내림차순 정렬한다. 1, 2, 3등 순으로 금메달, 은메달, 동메달을 줄 수 있는데, 한 국가에서 메달을 최대 2개 받을 수 있다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java...
👉 문제링크 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 🔸 문제 분석 🔸 버블 정렬의 swap이 한 번도 일어나지 않은 루프가 언제인지 알아내는 문제이다. 버블 정렬의 이중 for문에서 안쪽 for문 전체를 돌 때 swap이 일어나지 않았다는 것은 이미 모든 데이터가 정렬됐다는 의미이고, 프로세스를 바로 종료해서 시간 복잡도를 줄일 수 있다. 하지만 이 문제는 N의 최대 범위가 500,000이므로 버블 정렬로 문제를 풀면 시간 초과이다. 안쪽 for문이 몇 번 수행됐는지 구하는 다..
👉 문제링크 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 🔸 문제 분석 🔸 N의 최대 범위가 1,000으로 매우 작기 때문에 O(n^2) 시간 복잡도 알고리즘으로 풀 수 있다 버블 정렬의 시간 복잡도가 O(n^2)이므로 버블 정렬 알고리즘을 이용해 정렬해도 시간 복잡도 안에서 문제를 해결할 수 있다 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Sys..