- [ 문제 ]
더보기
단어 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
반응형
'Algorithm Practice > [ 프로그래머스 ]' 카테고리의 다른 글
[ 프로그래머스 ] [ #12943 ] 콜라츠 추측 (0) | 2020.09.08 |
---|---|
[ 프로그래머스 ] [ #12926 ] 시저 암호 (0) | 2020.09.08 |
[ 프로그래머스 ] [ #12915 ] 문자열 내 마음대로 정렬하기 (0) | 2020.09.05 |
[ 프로그래머스 ] [ #42748 ] K번째 수 (0) | 2020.09.04 |
[ 프로그래머스 ] [ #12906 ] 같은 숫자는 싫어 (0) | 2020.09.03 |