CodeKata/Programmers

[CK] 연습문제 > 가운데 글자 가져오기

anothel 2021. 12. 2.

문제 설명

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

재한사항
  • s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s return
"abcde" "c"
"qwer" "we"

 

Solution

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string solution(string s) {
  string answer = "";

  if (s.length() & 1 == 1) {
    answer = s.at(s.length() / 2);
  } else {
    answer += s.at(s.length() / 2 - 1);
    answer += s.at(s.length() / 2);
  }

  return answer;
}

 

남의 코드

#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);
}

 

후기

홀 짝을 구분할 때 가장 좋은 방법은 & 1 == 1의 조건을 붙이는 것이다. 남의 코드에서처럼 삼항연산자를 사용하는 방법도 좋아 보인다.

그리고 나는 얼른 Level 1을 모두 마친 후 Level 2를 모두 마치고 Level 3 4 5 모두 마치러 가야겠다.

 

(url: https://programmers.co.kr/learn/courses/30/lessons/12903)

 

댓글