본문 바로가기

프로그래머스 코딩테스트

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

첫번째 - 특정 문자 제거하기

문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

입출력 예

my_string letter result
"abcdef" "f" "abcde"
"BCBdbe" "B" "Cdbe"

 

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

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

my_string을 answer에 그대로 옮기는데

letter와 같지 않을때만 answer에 넣어주면 된다

 

 

 

 

두번째 - 각도기

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180

 

입출력 예

angle result
70 1
91 3
180 4

 

 

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

int solution(int angle) {
    int answer = 0;
    if(angle>0 && angle<90)
        answer = 1;
    else if(angle == 90)
        answer = 2;
    else if(angle > 90 && angle < 180)
        answer = 3;
    else if(angle == 180)
        answer = 4;
            
    return answer;
}

if, else if문을 이용해서 

예각 직각 둔각 평각 순서대로 걸러주면 된다

 

 

 

 

세번째 - 양꼬치

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지

return 하도록 solution 함수를 완성해보세요.

 

입출력 예

n k result
10 3 124,000
64 6 768,000

 

 

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

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

우선 서비스로 음료수를 빼주기 전 가격을 먼저 계산한다

-> n*12000 + k*2000

그리고 n을 10으로 나눈 몫의 개수만큼 음료수의 가격을 빼주면 된다

 

 

 

 

 

네번째 - 짝수의 합

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

 

입출력 예

n result
10 30
4 6

 

 

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

int solution(int n) {
    int answer = 0;
    int i = 2;
    while(i <= n){
        answer += i;
        i += 2;
    }
    return answer;
}

i를 제일 작은 짝수인 2로 놓고

while문을 사용해 i가 n보다 작을때 계속 돌아가도록 한다

반복문 안에서는 answer에 i를 계속 더하고 i 또한 2씩 증가하도록 한다