본문 바로가기

프로그래머스 코딩테스트

프로그래머스 코딩테스트 입문 DAY3

첫번째 - 나머지구하기

정수 num1, num2가 매개변수로 주어질 때, num1num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

입출력 예

num1
num2
result
3
2
1
10
5
0

 

int solution(int num1, int num2) {
    int answer = -1;
    answer = num1%num2;
    return answer;
}

그냥 % 연산자 써주면 된당

두번째 - 중앙값 구하기

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

입출력 예

array
result
[1, 2, 7, 10, 11]
7
[9, -1, 0]
0

 

int solution(int array[], size_t array_len) {
        int answer = 0;
        int i, j, temp, minIndx;
        for(j=0;j<array_len;j++){
            minIndx=j;
            for(i=j;i<array_len;i++)
                if(array[i]<array[minIndx])
                    minIndx=i;
            temp=array[j];
            array[j]=array[minIndx];
            array[minIndx]=temp;
        }

        answer=array[array_len/2];

        return answer;
    }

 

일단 정렬을 해준 후

배열의 가운데 값을 찾아서 리턴햇다

정렬에는 중첩 반복문 사용

제일 작은 값을 찾아서 앞에서부터 바꿔주면 된다

정렬만 잘 하면 어렵지 않다

세번째 - 최빈값 구하기

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

입출력 예

array
result
[1, 2, 3, 3, 3, 4]
3
[1, 1, 2, 2]
-1
[1]
1

int solution(int array[], size_t array_len) {
   int answer = 0;
   int count = 0, maxCount = 0;

int i, j;
for (i = 0; i < array_len; i++) {
    count = 0;
    for (j = i; j < array_len; j++)
        if (array[i] == array[j])
            count++;

    if (count > maxCount) {
        maxCount = count;
        answer = array[i];
    }
    else if (count == maxCount)
        answer = -1;
    }
    return answer;
}

이거 진~~~~짜 오래 고민햇다...

넘나 어려웟음

구글에 열심히 서치해가며 풀엇다...ㅎ

저는 왕왕초보니까요

이것도 중첩반복문을 사용햇다

나는 그냥 for문이 제일 편한듯... 이건 사람마다 다르겟지만요

앞에서부터 갯수 세어주고 맥스카운트랑 비교 해주면 된다

뭔가 쓰고보면 참 간단한데 왜케 푸는게 힘들엇을까

원래는 정말로 숫자를 세는 알고리즘으로 가려고 햇는데

(1이 3개 2가 1개...)

그럼 코드가 너무 복잡해지고

내가 생각한 방향으로 잘 되지 않아서 여기서 엄청 고민을 햇다

j=i로 놓음으로써 문제를 해결할 수 잇엇당ㅎㅎㅎ

네번째 - 짝수는 싫어요

정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

입출력 예

n
result
10
[1, 3, 5, 7, 9]
15
[1, 3, 5, 7, 9, 11, 13, 15]

int* solution(int n) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(sizeof(int) * ((n+1)/2));
    int odd = 1, i;
    
    for(i=0; odd<= n; i++){
        answer[i]=odd;
        odd += 2;
    }   
    return answer;
}

 

 

동적할당은 챗지피티한테 물어봣ㄷ다

응그래도몰라

n이하일때까지 odd에 2씩 더해주면된당

3일차끝

그냥 정말 단지 개인적인 기록용이다...

심심하면 봐주떼염