본문 바로가기

전체 글258

3. Divide and Conquer 보호되어 있는 글 입니다. 2025. 4. 13.
24051: 삽입정렬1 문제오늘도 서준이는 삽입 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자.N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 삽입 정렬로 배열 A를 오름차순 정렬할 경우 배열 A에 K 번째 저장되는 수를 구해서 우리 서준이를 도와주자.크기가 N인 배열에 대한 삽입 정렬 의사 코드는 다음과 같다.insertion_sort(A[1..N]) { # A[1..N]을 오름차순 정렬한다. for i 입력첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 10,000), 저장 횟수 K(1 ≤ K ≤ N2)가 주어진다.다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109)출력K 번째 저장 되는 수를 출력한다. 저장 .. 2025. 4. 12.
2740: 행렬의 곱셈 문제N*M크기의 행렬 A와 M*K크기의 행렬 B가 주어졌을 때, 두 행렬을 곱하는 프로그램을 작성하시오.입력첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개가 차례대로 주어진다. N과 M, 그리고 K는 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.출력첫째 줄부터 N개의 줄에 행렬 A와 B를 곱한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.예제 입력 1 복사3 21 23 45 62 3-1 -2 00 0 3 예제 출력 1 복사-1 -2 6-3 -6 12-5 -10 18N, M = map(int, inp.. 2025. 4. 11.
11004: k번째 수 - 퀵정렬 Hoare 분할에서는 왼쪽에서 피벗보다 큰 값과 오른쪽에서 피벗보다 작은 값을 찾아 서로 교환합니다. 왼쪽도 잘못된 값이고 오른쪽도 잘못된 값일때 둘을 교환하는 것입니다.def partition(A, left, right): low = left + 1 high = right pivot = A[left] while low = left and A[high] > pivot: high -= 1 if low  Hoare partition algorithm의 목표는 [pivot 이하 값들] pivot [pivot 초과 값들] 이렇게 만드는 것입니다. pivot을 변경하며 반복하면 (퀵)정렬이 되는 것이지요.따라서 low는 pivot보다 큰 값을 찾으려고 오른쪽.. 2025. 4. 9.
23882: 알고리즘 수업 - 선택 정렬 2 문제오늘도 서준이는 선택 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자.N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 선택 정렬로 배열 A를 오름차순 정렬할 경우 K 번 교환이 발생한 직후의 배열 A를 출력해 보자.크기가 N인 배열에 대한 선택 정렬 의사 코드는 다음과 같다.selection_sort(A[1..N]) { # A[1..N]을 오름차순 정렬한다. for last A[i] # last와 i가 서로 다르면 A[last]와 A[i]를 교환 }}입력첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 10,000), 교환 횟수 K(1 ≤ K ≤ N)가 주어진다.다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어.. 2025. 4. 9.
4주차. MLP코드 보호되어 있는 글 입니다. 2025. 4. 9.