#include <stdio.h>
void bubbleSort(int num[]); // 함수 미리 정의 해주기
void isAnagram(int original[], int num[]);
int main(void){
// TestCase
// 입력값: 12345, 54321 -> 출력값: True
// 입력값: 14258, 25431 -> 출력값: False
// 입력값: 11132, 21131 -> 출력값: True
int original[5] = {1,1,1,3,2};
int num[5] = {2,1,1,3,1};
// 각각의 배열을 정렬해주기
bubbleSort(original);
bubbleSort(num);
isAnagram(original, num);
}
void bubbleSort(int num[] ){
int temp = 0;
for(int i = 0; i<5; i++){
for(int j = 0; j <5 - i - 1; j++){
if(num[j] > num[j+1]){
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
}
void isAnagram(int original[], int num[]){
for(int i =0; i < 5; i++){
if(original[i] != num[i]){
printf("False\n");
return ;
}
}
printf("True\n");
}
#include <cs50.h>
#include <stdio.h>
int main()
{
int arr1[5];
int arr2[5];
int count = 0;
printf("첫번째 값을 입력하세요\n");
for(int i =0; i<5; i++){
arr1[i] = get_int("%d : ",i+1);
}
printf("\n두번째 값을 입력하세요\n");
for(int i =0; i<5; i++){
arr2[i] = get_int("%d : ",i+1);
}
for(int i = 0; i<5; i++){
count = 0;
for(int j =0; j<5; j++){
if(arr2[j] != -1 && arr1[i] == arr2[j]){
arr2[j] = -1; // -1로 체크 처리
break;
}
count++;
}
if(count == 5){
printf("False\n");
return 1;
}
}
printf("True\n");
return 0;
}
#include <stdio.h>
int main(void) {
int a[5] = {3, 2, 6, 4, 2};
int n = 5;
int median, left, right, i, j, temp;
int sum_dist = 0;
left = 0;
right = n-1;
do {
median = a[left];
i = left;
j = right;
while (i<=j) {
while (i <= right && a[i] <= median) i++;
while (j > left && a[j] >= median) j--;
if (i < j) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[left] = a[j];
a[j] = median;
if (j < n/2) {
left = j+1;
} else {
right = j-1;
}
}while (j != n/2);
printf("%d\n", median);
return 1;
}
// !!!! Ellie코치 3조 코드 !!!!
#include <stdio.h>
void array_sort(int *arr, int n){ // 배열 오름차순 정렬
for(int i=0; i<n; i++){
for(int j=0; j<n-i-1; j++){
if(arr[j]>arr[j+1]){
int temp= arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void method_1(int *arr, int n){ // 첫 번째 방법 총 시간 계산
int total= 0;
for(int i=n-1; i>2; i-=2){
total+= 2*arr[1] + arr[i] + arr[0];
}
if(n%2 == 0){
total+= arr[1];
}
else{
total+= arr[0] + arr[1] + arr[2];
}
printf("%d\n", total);
}
void print_method_1(int *arr, int n){ // 첫 번째 방법 과정 출력
for(int i=n-1; i>2; i-=2){
printf("%d%d\n", arr[0], arr[1]);
printf("%d\n", arr[0]);
printf("%d%d\n", arr[i-1], arr[i]);
printf("%d\n", arr[1]);
}
if(n%2 == 0){
printf("%d%d\n", arr[0], arr[1]);
}
else{
printf("%d%d\n", arr[0], arr[2]);
printf("%d\n", arr[0]);
printf("%d%d\n", arr[0], arr[1]);
}
}
void method_2(int *arr, int n){ // 두 번째 방법 총 시간 계산
int total= 0;
for(int i=n-1; i>1; i--)
{
total+= arr[0] + arr[i];
}
total+= arr[1];
printf("%d\n", total);
}
void print_method_2(int *arr, int n) // 두 번째 방법 과정 출력
{
for(int i=n-1; i>1; i--)
{
printf("%d%d\n", arr[0], arr[i]);
printf("%d\n", arr[0]);
}
printf("%d%d\n", arr[0], arr[1]);
}
int main()
{
int n;
scanf("%d", &n);
int arr[n];
for(int i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
array_sort(arr, n);
if(arr[1]*2 < arr[0]+arr[n-2])
{
method_1(arr, n);
print_method_1(arr, n);
}
else
{
method_2(arr, n);
print_method_2(arr, n);
}
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n = get_int("N : ");
int m = get_int("M : ");
int arr[n];
int max = 0;
int count = 0;
for(int i =0; i<n; i++){
arr[i] = get_int("%d : ",i);
}
for(int i =0; i<n; i++){
count = 0;
for(int j = i+1; j<n; j++){
if(arr[i] > arr[j]){
count++;
}
}
if(count > max){
max = count;
}
}
printf("%d\n",max);
return 0;
}
재밌는 문제가 많았던 4주차. 2번문제 그냥 생각없이 평균값아니야??하고 평균값으로 바로 풀어버렸는데 응 아니야 ~ 중앙값이야 ~ 주어진 예제에선 평균값과 중앙값이 같지만 {0,0,0,4}일때 평균값인 1로 계산 시 모든 거리의 합은 6이고 중앙값인 0으로 계산 시 모든 거리의 합이 4이기 때문에 거리의 합이 최소인 중앙값으로 계산해줘야 한다. 3번문제는 제일 어려웠다 .. 힌트 안보고 풀 수 없는 문제 .. ^^ 최소시간을 구할 수 있는 경우가 두가지 이고 상황에 따라 어느 경우를 택해야 되는지 결정해야 되는 문제였다. 그 두가지 경우를 생각해내는 과정이 어려울뿐 구현하기엔 그렇게 어렵지 않은 문제였다. 4번문제는 의외로 쉽게 풀었다. 3번보다 더 쉬웠던것 같기도.. 벌써 4주차!!! 시간 증말로 빠르다 앞으로 남은 2주차도 화이팅 ~