개발 일지

TIL(24.03.06)

만식 2024. 3. 6. 20:02

출처 : https://school.programmers.co.kr/learn/challenges?order=recent

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

 


 

 

1. 특정 문자 제거하기

 

풀이

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* my_string, const char* letter) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char* answer = (char*)malloc(sizeof(char)* strlen(my_string));
    int k = 0;
    
    for(int i = 0; i < strlen(my_string); i++){        
        if(my_string[i] != letter[0]){
            answer[k++] = my_string[i];
        }    
    }
    answer[k] = '\0';
    return answer;
}

 

2. 아이스 아메리카노

 

 

풀이

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

 

3. 피자 나눠 먹기(1)

 

 

풀이

int solution(int n) {
    int answer = 0;
 if(n%7 == 0){
        answer = n/7;
    }
    else{
        answer = (n/7)+1;
    }
    return answer;
}

 

4. 최댓값 만들기(1)

 

 

풀이

int solution(int numbers[], size_t numbers_len) {
    int answer = 0;
    int flag = 0;
    for (int i=0; i<numbers_len; i++)
    {
        for (int j=0; j<numbers_len; j++)
        {
            if (numbers[i] < numbers[j])
            {
                flag = numbers[i];
                numbers[i] = numbers[j];
                numbers[j] = flag;
            }
        }
    }

    answer = (numbers[numbers_len-1]) * (numbers[numbers_len-2]);


    return answer;
}

 

5. 배열 두 배 만들기

 

 

풀이

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

 

6. 피자 나눠 먹기(3)

 

풀이

int solution(int slice, int n) {
    int answer = 0;
    answer=n/slice;
    if(n%slice>0)
    {
        answer+=1;
    }
    return answer;
}

 

7. 짝수 홀수 개수

 

 

풀이

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

 

8. 자릿수 더하기

 

풀이

int solution(int n) {
    int answer = 0;
    while(n>0){
        answer += n % 10;
        n /= 10;
    }
    return answer;
}

 

9. 배열의 유사도

 

풀이

int solution(const char* s1[], size_t s1_len, const char* s2[], size_t s2_len) {
    int answer = 0;
    for(int x=0; x<s1_len; x++)
    {
        for(int i=0; i<s2_len; i++)
        {
            if(!strcmp(s1[x],s2[i]))
            {
                answer++;
            }
        }
    }
    return answer;
}

 

10. 양꼬치

 

풀이

int solution(int n, int k) {
    int answer = 0;
    answer = n * 12000 + k * 2000 - (n/10) * 2000;
    return answer;
}