초보 개발자의 이야기, 릿허브

[C++] 프로그래머스 가운데 글자 가져오기 본문

코딩테스트/📘 프로그래머스 (programmers)

[C++] 프로그래머스 가운데 글자 가져오기

릿99 2021. 8. 23. 09:42
728x90
반응형
1. 문제이해

코딩테스트 연습 - 가운데 글자 가져오기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 가운데 글자 가져오기

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

programmers.co.kr

 

문자열 s의 가운데 글자를 반환하는 알고리즘을 구현하는 것이 목표이다.

문자열 s의 길이가 홀수라면 가운데 글자 하나,

짝수라면 가운데 글자 2개를 반환해야 한다.

 

 

 

2. 문제풀이

 

문자열 s의 가운데 글자를 반환하는 문제이다.

단, 길이가 홀수의 경우에는 가운데 글자 하나만을 출력하되, 짝수의 경우에는 가운데 글자 두개를 반환해야한다.

예를 들어, abc의 경우에는 b,

abcd의 경우에는 bc를 반환하면 된다.

문자열 s의 길이가 홀수이냐 짝수이냐에 따라 경우가 틀려지므로,

if문을 통해 경우를 나누어야겠다고 생각했다.

 

또한, abc가 주어진 경우, 각각 a가 s[0], b가 s[1], c가 s[2]에 해당하므로,

전체 s의 길이인 3을 2로 나눈 값, 3 / 2 = 1번째에 해당하는 값(s[1] = b)을 반환해주면

그 값이 해당 문자열의 가운데 값이 나왔다.

짝수인 abcd가 주어진 경우에는 4 / 2 = 2번째에 해당하는 값과 그 전 값을 더해주면 됐다.

(s[2] = c, s[1] = b)

문제의 주어진 틀은 다음과 같았다.

 

 

 

 

3. 소스코드
#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    string answer = "";
    int size = s.size();
    int index = size / 2;
    
    if(size % 2 == 1){  // 길이가 홀수인 경우
        answer = s[index];
    }
    else {  // 길이가 짝수인 경우
        answer = s[index - 1];
        answer += s[index];
    }
    
    return answer;
}

s의 길이를 체크하고 (size), s의 길이가 홀수이냐 짝수이냐에 따라 경우를 다르게 해주었다.

길이가 홀수인 경우에는 배열에 size / 2 한 값에 해당하는 값을 반환하고,

짝수인 경우에는 그 전의 값까지 이어서 반환해주었다.

 

 


처음에 홀수인지 짝수인지를 구별할때 나머지연산자(%)를 썼어야 하는데,

/ 를 써서 뭐가 틀렸는지 한참 들여다봤다..ㅎㅎ

이런 실수는 안하도록 해야지🤣

 

 

728x90
반응형