• [ 문제 ]
더보기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

제한사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예시

 

 

문자열에 길이에따라 ( 짝수 or 홀수 ) 홀수면 문자열에 가운데 요소를, 짝수면 가운데 2요소를 반환하는 문제였습니다.

쉬운 문제이지만, C++로 알고리즘을 공부한 사람에겐 확인하고 갈 함수가 하나 있었죠.

 

  • My Code
#include <string>
#include <vector>

using namespace std;

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

 

  • Better Code
#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    int len = s.length();
    if(len%2==0){
        return s.substr(len/2-1,2);
    }
    else {
            return s.substr(len/2,1);
        }
}

 

  •  So Simple Code
#include <string>

using namespace std;

string solution(string s) {
    return s.length()&1 ? s.substr(s.length()*0.5,1) : s.substr(s.length()*0.5-1,2);
}

 

  • [ CheckPoint ]
    • string.substr( 시작위치(int) , 시작위치부터 몇개까지 자를것인가(int) ) 를 기억하자.
    • 조건문을 사용하지 않고, 삼항연산자를 통해 초기조건을 숫자 1과 비트연산을 통해 홀수인지 짝수인지 판단할 수 있음을 확인하자.
728x90
반응형

+ Recent posts