정렬 15

백준(BOJ) 10814 : 나이순 정렬 (자바, 파이썬)

10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 설계 나이와 이름이 주어졌을 때 나이 순으로 정렬 나이와 이름을 각각 별도의 배열에 저장한 후, 인덱스 배열을 사용하여 나이 순으로 정렬 나이가 같은 경우에는 가입 순서(입력 순서)대로 정렬 정렬된 순서대로 나이와 이름을 출력하여 최종 결과를 도출 이러한 접근 방식은 나이와 이름이 별도의 배열에 저장되어 있기 때문에, 인덱스를 사용하여 두 배열을 연결하는 방식으로 구현 구현 코드 자바(Java) // package boj10814; import java.util.*; ..

Problem_Solving 2024.01.18

백준(BOJ) 1654 : 랜선 자르기 (자바, 파이썬)

1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 설계 이분 탐색(Binary Search) 알고리즘을 사용하여 최적의 랜선 길이를 찾습니다. 이분 탐색은 주어진 범위를 반으로 나누어 탐색하는 방법으로, 효율적인 탐색을 가능하게 합니다. 이 경우, 랜선의 길이 범위를 절반씩 줄여가며 원하는 개수의 랜선을 만들 수 있는 최대 길이를 찾습니다. 구현 코드 자바(Java) // pacakge boj1654; import java.util.*; public class Main { publi..

Problem_Solving 2024.01.17

백준(BOJ) 11652 : 카드 (자바, 파이썬)

11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 설계 주어진 숫자들 중 가장 많이 등장하는 숫자를 찾고, 동일한 빈도의 숫자가 여러 개 있는 경우에는 가장 작은 숫자를 출력합니다. 각 숫자의 등장 횟수를 저장하는 HashMap을 사용하여 숫자들의 빈도를 계산하고, 이를 기반으로 정렬하는 것입니다. 숫자와 빈도를 2차원 배열에 저장한 후, 빈도가 동일한 경우 숫자의 크기에 따라 오름차순으로, 빈도가 다른 경우 빈도에 따라 내림차순으로 정렬합니다. 그 후, 가장 첫 번째 원소(가장 많이 등장하거나 가장 작은 ..

Problem_Solving 2024.01.12

백준(BOJ) 10972 : 다음 순열 (자바, JAVA)

10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 설계 주어진 순열에 대해 사전순으로 바로 다음에 오는 순열을 찾아 출 순열의 "다음"이라는 것은 사전순으로 바로 다음에 오는 순서를 의미. 먼저 순열에서 뒤쪽부터 탐색하여 이전 숫자보다 현재 숫자가 처음으로 커지는 지점을 찾음. 이 지점을 변경점(cp)으로 하여, 변경점의 숫자보다 큰 숫자 중 가장 뒤에 있는 숫자와 변경점의 숫자를 교환 이후 변경점 이후의 숫자들을 오름차순으로 정렬. 이렇게 하여 얻어진 순열이 입력된 순열의 다음 순열이 됨. 만약 다음 순열이 존재하지 않으면, 즉 주어진 순열이 사전순으로 마지막 순열이면 ..

Problem_Solving 2024.01.05

백준(BOJ) 10973 : 이전 순열 (자바, JAVA)

10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 설계 주어진 순열에서 바로 이전 순열로 변경할 위치를 찾은 후, 해당 위치와 교환할 숫자를 찾아 순열을 변경 순열 변경은 주어진 순열을 뒤에서부터 탐색하여 처음으로 내림차순이 끝나는 위치를 찾고, 그 위치의 바로 앞 숫자와 교환할 숫자를 찾아 순열을 변경하는 방식으로 진행 변경된 순열의 뒷부분은 내림차순으로 정렬하여 이전 순열을 완성 구현 코드 // package boj10973; // 패키지 선언 import java.util.ArrayList; // ArrayList 사용을 위한 import import java.u..

Problem_Solving 2023.12.28