가운데 글자 가져오기
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
재한사항
- s는 길이가 1 이상, 100이하인 스트링입니다
단어의 길이가 짝수인지 홀수인지 판별한 후 가운데 글자를 반환하면 된다.
짝수 홀수 판별 알고리즘
정수가 짝수인지 홀수인지 판별하는 법은 쉽다. 2로 나눠서 나머지가 0이면 짝수고, 아니면 홀수다.
// 1. 조건문
if (number % 2 == 0) // 짝수
{
}
else // 홀수
{
}
// 2. 함수
bool IsEvenNumber(int number)
{
return number % 2 == 0; // 2로 나누어 떨어지면 짝수다.
}
비트 연산으로 판별하는 방법도 있다. 홀수일 경우 이진법에서 제일 마지막 수는 1이다. 비트 AND 연산자(&
)를 이용해서 알 수 있다. 비트 연산에 대한 더 자세한 내용을 알고 싶다면 아래 포스트들을 참고하면 된다.
2018/06/27 - C++ 03.07 - 비트 단위 연산자 (Bitwise operators)
2018/06/27 - C++ 03.08 - 비트 플래그와 비트 마스크 (Bit flags and bit masks)
bool IsEvenNumber(int number)
{
// 1 & 1: 0001 & 0001 = 1
// 2 & 1: 0010 & 0001 = 0
// 3 & 1: 0011 & 0001 = 1
// 4 & 1: 0100 & 0001 = 0
return number & 1 == 0;
}
문자열 자르기
C++의 string에는 문자열 일부를 반환하는 substr
메서드가 있다.
string substr (size_t pos = 0, size_t len = npos) const;
문자열의 pos
부터 len
길이 만큼의 문자열을 반환한다. 만약 len
의 값이 문자열의 길이보다 길거나, string::npos
를 전달하면 문자열의 끝까지만 반환한다. 이 메서드를 이용해서 '가운데 글자 가져오기' 문제를 해결해보자.
#include <string>
#include <vector>
using namespace std;
string solution(string s)
{
int length = s.length();
if (length & 1 == 1) // 홀수
{
return s.substr(length / 2, 1);
}
else
{
return s.substr(length / 2 - 1, 2);
}
}
2018/12/19 - [프로그래머스] 소수의 합, 소수 판별 알고리즘
2018/12/21 - [프로그래머스] 완주하지 못한 선수, map과 unordered_map의 차이
2018/12/23 - [프로그래머스] N으로 표현
2018/12/23 - [프로그래머스] 모의고사
2018/12/23 - [프로그래머스] K번째수, vector.assign()
2018/12/25 - [프로그래머스] 체육복, 벡터 삭제 시 주의점 (iterator, erase)