반응형

정렬 7

[BOJ]1269 대칭차집합(S4, C++)

📋 개요 이번문제는 hash map {key:value}의 빠른 검색으로 문제를 풀 수 있다. 처음에 구현으로 생각하고 문제를 풀었는데 "시간 초과"가 나서 hash map을 안 사용하고 vector로 풀었다. map의 빠른 검색시간을 활용해서 풀어야하는 문제로 파악하고 바로 코드를 수정했다. 🧩 문제 https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 📝 형식 📥 입력 📤 출력 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈..

Algorithm/Problem 2024.03.08

[BOJ]1059 좋은구간(S4, C++)

📋 개요 이번 문제도 풀면서 살짝 해매다가 2시간이 넘어버렸지만, 거의 답에 가까워졌다. 문제는 그리 어렵지 않았다. 좋은 구간의 조건을 알고 있다면 풀기 쉬운 문제다. 🧩 문제 https://www.acmicpc.net/problem/1059 1059번: 좋은 구간 [9, 10], [9, 11], [9, 12], [10, 11], [10, 12] www.acmicpc.net 📝 형식 📥 입력 📤 출력 첫째 줄에 집합 S의 크기 L이 주어진다. 둘째 줄에는 집합에 포함된 정수가 주어진다. 셋째 줄에는 n이 주어진다. 첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다. 💡 예제 🔢 번호 📥 입력 📤 출력 1 4 1 7 14 10 2 4 2 5 4 8 13 24 30 10 5 3 5 10 20 30 40..

Algorithm/Problem 2024.03.07

[Algorithm] 정렬 - 병합 정렬(Merge Sort)

#요약 현대 컴퓨터의 아버지 '존 폰 노이만'이 제안 분할 정복(Divid & Conquer)의 전략을 도입 문제를 작은 문제로 분리하고 각각 해결한 후에, 결과를 모아서 원래 문제를 해결하는 전략 순환 호출을 구현 리스트의 길이가 0 OR 1일때 이미 정렬된 것 정렬되지 않는 리스트들 절반으로 잘바 비슷한 크기의 두 부분 리스트로 나눔 ➡️ Divid 각 부분 리스트를 재귀적으로 병합 정렬을 이용해 정렬 ➡️ Conquer 두 부분 리스트를 다시 하나의 정렬된 리스트로 병합 ➡️ Combine #구체적 설명 하나의 데이터 배열을 균등하게 절반으로 나눈다. 나누어진 2개의 배열을 정렬한다. 분할: 입력 배열을 2개의 부분 배열로 분할한다. 정복: 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않..

Algorithm/Concept 2023.11.14

[Algorithm] 정렬 - 삽입 정렬(Insertion Sort)

#요약 Target과 그 이전 데이터들과 비교하며 정렬한다. 소규모 데이터에 효율적이다. #구체적 설명 두번째 요소부터 시작하여 배열을 순회 현재 요소를 Target이라고 하고, Target 이전의 요소들과 비교 Target이 이전 요소보다 작으면, 이전 요소를 한 칸 뒤로 이동 이를 Target이 이전 요소들보다 크거나 같을 때까지 반복하고, Target을 적절한 위치에 삽입 모든 요소에 대해 위 과정을 반복 #알고리즘 #코드 작성 import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; static int cnt = 0; public static void main(Stri..

Algorithm/Concept 2023.11.13

[Algorithm] 정렬 - 선택 정렬(Selection Sort)

# 요약 인간이 정렬하는 과정과 매우 비슷 데이터를 한번에 읽고 정렬 진 # 구체적 설명 주어진 데이터 리스트 중에 최솟값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; static int cnt =0; public static void main(String[] args) { selectionSort(arr); System.out.println(Arrays.toString(arr)); } private static ..

Algorithm/Concept 2023.11.13

[Algorithm] 정렬 - 칵테일 정렬(Cocktail Sort)

# 요약 버블 정렬의 파생형 정렬 양방향 버블 정렬이 이루어진다. 마치 양쪽에서 흔드는것처럼 보여서 칵테일 혹은 쉐이커 정렬이라고 불린다. # 구체적 설명 홀수 번째 돌때는 앞부터, 짝수번째를 돌때는 뒤부터 훑는다. 제일 처음에 하나, 제일 뒤에하나, 다시 제일 앞에 하나를 정렬하면서 마치 정렬하는 과정이 앞뒤로 흔드는 것처럼 보인다. 1회전을 수행하고 나면 오름차순, 내림차순에 따라 자료가 정렬이 진행된다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; public static void main(String[] args) {..

Algorithm/Concept 2023.11.11

[Algorithm] 정렬 - 버블 정렬(Bubble Sort)

# 요약 서로 인접한 두원소를 검사하여 정렬하는 알고리즘 인접한 2개의 데이터를 비교하여 크기가 순서대로 되어있지 않으면 SWAP한다. 선택 정렬과 기본 개념이 유사 # 구체적 설명 버블 정렬은 1번째 데이터와 2번째 데이터, 2번째 데이터와 3번째 데이터, 3번째 데이터와 4번째 데이터를 비교한다. 즉, n과 n+1을 비교하며 조건에따라 SWAP을 진행한다.. 1회전을 수행하고 나면 오름차순, 내림차순에 따라 자료가 정렬이 진행된다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class sort_bubble { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; //정렬 대상 public static void ..

Algorithm/Concept 2023.11.10
반응형