코딩해요/C

[프로그래머스/C] 250204 코딩테스트

yenas0 2025. 2. 4. 23:50
반응형

콜라츠 추측

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(long long num) {
    int answer = 0;
    while(num!=1){
        if(answer == 500){
            answer = -1;
            break;
        }
        if(num%2==0){
            num/=2;
        }
        else {
            num = num*3 + 1;
        }
        answer++;
    }
    return answer;
}

계속 테스트 3번이 안돼서 보니까 문제에서 num 범위가 8,000,000까지여서 int로 받으면 안됐다..

파라미터 자료형을 변경해주니 풀림

 

 

 

없는 숫자 더하기

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// numbers_len은 배열 numbers의 길이입니다.
int solution(int numbers[], size_t numbers_len) {
    int answer = 45;
    for(int i=0;i<numbers_len; i++){
        answer -= numbers[i];
        }
    return answer;
}

일단 0부터 9까지 다 더한걸 aswer에 넣고 돌면서 있는 숫자를뺐다.

 

 

 

음양더하기

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// absolutes_len은 배열 absolutes의 길이입니다.
// signs_len은 배열 signs의 길이입니다.
int solution(int absolutes[], size_t absolutes_len, bool signs[], size_t signs_len) {
    int answer = 0;
    for(int i=0; i<absolutes_len; i++){
        if(signs[i]==true){
            answer += absolutes[i];
        }
        else{
            answer -= absolutes[i];
        }
    }
    return answer;
}

 

 

 

 

핸드폰번호 가리기

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* phone_number) {
    int len = strlen(phone_number); // 전화번호 길이 계산
    char* answer = (char*)malloc(len + 1); // 결과 문자열 동적 할당 (+1은 널 문자 포함)
    
    for (int i = 0; i < len; i++) {
        if (i < len - 4) {
            answer[i] = '*'; // 뒷 4자리를 제외한 부분은 '*'로 대체
        } else {
            answer[i] = phone_number[i]; // 뒷 4자리는 그대로 복사
        }
    }
    answer[len] = '\0'; // 문자열 끝에 널 문자 추가
    
    return answer; // 결과 문자열 반환
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

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

 

 

 

내적

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// a_len은 배열 a의 길이입니다.
// b_len은 배열 b의 길이입니다.
int solution(int a[], size_t a_len, int b[], size_t b_len) {
    int answer = 0;
    for (int i=0; i<a_len; i++){
        answer += a[i]*b[i];
    }
    return answer;
}
반응형