AI 공부하는 도비

대학원생이 AI, NLP등을 공부합니다

코딩

[프로그래머스 lv1] 문자열 가운데 글자 찾기

공부하는 도비 2020. 7. 11. 14:17

프로그래머스 레벨1 가운데 글자 가져오기 문제입니다.

  • 문제: 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
  • 제한사항: s는 길이가 1 이상, 100이하인 스트링입니다.
  • 언어: C

 

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

char* solution(const char* s) {
    char* answer = (char*)malloc(2);
    int len = strlen(s);
    if(len%2){ //odd
        int mid = len/2;
        answer[0] = s[mid];
    }
    else{ //even
        int mid = len/2-1;
        answer[0] = s[mid];
        answer[1] = s[mid+1];
    }
    
    return answer;
}

 

 

*홀짝 구분

a%2 == 1 이면 홀수

a%2 == 0 이면 짝수

 

 

  • 언어: C++
#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    int len = s.length();
    if(len%2){
        answer.push_back(s[len/2]);
    }
    else{
        answer.push_back(s[len/2-1]);
        answer.push_back(s[len/2]);
    }
    return answer;
}

 

c언어와는 달리 c++은 string클래스를 사용하여 문자열을 다룬다.

C++에서의 차이점은 문자열의 끝에 '\0'이 붙지않다는 것이다.

문자열의 인자에 접근할 때는 똑같이 []를 사용하면 되지만, 길이를 구할 때는 strlen() 대신 .length()를 사용하고 문자열에 새로운 변수를 대입할 때는 .push_back() 함수를 사용한다.

 

*void push_back(char c);

함수를 호출하는 string의 맨뒤에 문자 c를 추가한다.

예. str.push_back('c');

 

*void pop_back();

함수를 호출하는 string의 맨뒤에 있는 문자를 삭제한다.

예. str.pop_back();