문제 및 답안
문제
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s | return |
---|---|
abcde | c |
qwer | we |
JavaScript 답안
function solution(s) {
var answer = '';
// 홀수일 때
// 홀수를 2로 나눈 나머지는 항상 1
// 홀수의 경우 소수점이 생기기때문에, Math 메서드로 제거한다.
if (s.length % 2 === 1) {
let num = Math.floor(s.length / 2);
return s[num];
}
// 짝수일 때
// 짝수를 2로 나눈 나머지는 항상 2
// 짝수일때는 가운데 두 글자를 반환해야하기 때문에
// 두 값을 반환해준다
if (s.length % 2 === 0) {
let num = s.length / 2;
return s[num-1] + s[num];
}
return answer;
}
다른 사람 풀이 코드
function solution(s) {
return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
*substr()은 문자열에서 특정 부분만 골라내는 메서드이다.
- substr(start, length) 의 형태로 사용하며, start는 시작 위치, length는 잘라낼 문자열의 길이를 나타낸다.
- length를 지정하지 않으면 문자열의 끝까지 잘라내게 된다.
- 위 코드를 다시보면 substr 메서드의 첫 번째 매개변수에서 문자열 s의 길이를 2로 나눈 값을 소수점을 버리고 사용한다.
- 두 번째 매개변수가 들어가는 부분에서, 삼항연산자를 사용하여 s.length를 2로 나눈 값의 나머지가 0이면(짝수) 2개의 문자열을 잘라내고, 아닐 경우(홀수)는 1개만 잘라낸다.
- 따라서 내가 위에 줄줄이 써놓은 코드와 같은 결과값을 반환하게 된다.
어려웠던 점
- 코드를 훨씬 짧게 줄이는 방법을 생각해보자
출처: 프로그래머스